41

我正在使用 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 中不受支持。任何想法,但如何才能完成这样的任务。

4

3 回答 3

75

您必须对从 a而不是集合返回的游标distinct进行调用:find

tags = db.mycoll.find({"category": "movie"}).distinct("tags")
于 2012-10-14T14:51:49.443 回答
24

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

于 2015-07-14T16:49:31.163 回答
4

实际上有一个过滤器参数,您可以传入不同的方法,如 pymongo Doc 中所述,

Pymongo 独特的

像这样

distinct_tags = db.mycoll.distinct("tags",{"category": "movie"})
于 2020-09-15T13:36:35.723 回答