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シェルで、db.mycoll.distinct('tags'、{category: "movie"})を発行しましたが、問題なく動作しました。しかし、私がpymongoで同じことをすると、エラーが発生します。pymongoではサポートされていないと思います。どのようにそのようなタスクを達成することができますが、任意のアイデア。

4

3 に答える 3

75

コレクションではなく、から返されたカーソル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

このような

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