2012-10-14 7 views
21

Tôi đang sử dụng pymongo và muốn có các giá trị riêng biệt cho một trường sao cho tôi cũng có thể chuyển các tham số truy vấn khác. Ví dụ: Tôi có các mục nhập như:pymongo- Làm thế nào tôi có thể có các giá trị riêng biệt cho trường cùng với các tham số truy vấn khác

{ 
    id = "my_id1" 
    tags: [tag1, tag2, tag3], 
    category: "movie", 
} 
{ 
    id = "my_id2" 
    tags: [tag3, tag6, tag9], 
    category: "tv", 
} 
{ 
    id = "my_id3" 
    tags: [tag2, tag6, tag8], 
    category: "movie", 
} 

Vì vậy, tôi muốn có tất cả các thẻ riêng biệt trong danh mục phim. Bất cứ ai có thể xin vui lòng hướng dẫn làm thế nào tôi có thể đạt được điều này bằng cách sử dụng pymongo. Trong trình bao javascript mongo, tôi đã phát hành db.mycoll.distinct ('tags', {category: "movie"}) và nó hoạt động tốt. Nhưng khi tôi làm như vậy trong pymongo nó làm tăng lỗi. Tôi đoán nó không được hỗ trợ trong pymongo. Bất kỳ ý tưởng mặc dù làm thế nào một nhiệm vụ có thể đạt được.

Trả lời

41

Bạn phải thực hiện cuộc gọi distincton the cursor trở về từ một find thay vì vào bộ sưu tập:

tags = db.mycoll.find({"category": "movie"}).distinct("tags") 
+1

Cảm ơn bạn, tôi đã gặp khó khăn thực sự với nó :) –