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

Sus*_*pta 33 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",
}
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*yHK 57

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

tags = db.mycoll.find({"category": "movie"}).distinct("tags")
Run Code Online (Sandbox Code Playgroud)


Gra*_*ell 19

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


May*_*gar 7

实际上,您可以在 pymongo 文档中提到的不同方法中传递一个过滤器参数,

皮蒙戈独特

像这样

distinct_tags = db.mycoll.distinct("tags",{"category": "movie"})
Run Code Online (Sandbox Code Playgroud)