pymongo-如何为字段和其他查询参数提供不同的值

时间:2012-10-14 06:15:52

标签: python mongodb pymongo

我正在使用pymongo并希望为字段设置不同的值,以便我也可以传递其他查询参数。例如,我有以下条目:

{
   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",
}

所以我希望在电影类别下拥有所有不同的标签。任何人都可以指导我如何使用pymongo实现这一目标。在mongo javascript shell中,我发布了db.mycoll.distinct('tags',{category:“movie”}),它运行得很好。但是当我在pymongo中做同样的事情时,它会引发错误。我想pymongo不支持它。不知道怎样才能实现这样的任务。

3 个答案:

答案 0 :(得分:53)

您必须从distinct而非集合中返回find来电on the cursor

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

答案 1 :(得分:17)

pymongo(自v1.1.1起)支持collection.distinct('key')

答案 2 :(得分:0)

实际上,有一个过滤器参数,您可以按照pymongo文档中所述的不同方法来传递

Pymongo Distinct

像这样

distinct_tags = db.mycoll.distinct("tags",{"category": "movie"})