web-dev-qa-db-fra.com

pymongo- Comment puis-je avoir des valeurs distinctes pour un champ avec d'autres paramètres de requête

J'utilise pymongo et je veux avoir des valeurs distinctes pour un champ de sorte que je puisse également passer d'autres paramètres de requête. Par exemple, j'ai des entrées comme:

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

Je veux donc avoir toutes les balises distinctes dans la catégorie de film. Quelqu'un peut-il s'il vous plaît guider comment puis-je y parvenir en utilisant pymongo. Dans mongo javascript Shell, j'ai publié db.mycoll.distinct ('tags', {category: "movie"}) et cela a très bien fonctionné. Mais quand je fais de même en pymongo, cela soulève des erreurs. Je suppose que ce n'est pas pris en charge dans pymongo. Toute idée cependant comment une telle tâche peut être réalisée.

32
Sushant Gupta

Vous devez faire l'appel distinctsur le curseur renvoyé par un find au lieu de sur la collection:

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

pymongo (depuis la v1.1.1) prend en charge collection.distinct('key')

19
Graham Russell