Je souhaite interroger mongodb pour les documents contenant un tableau de sorte que tous ses éléments soient membres d'un tableau donné par l'utilisateur. En d'autres termes, je dois sélectionner des documents dont le tableau est un sous-ensemble d'un tableau donné. Par exemple, si j'ai cette collection:Comment rechercher des documents avec un attribut de tableau contenu dans un tableau donné
> db.foos.find()
{ "_id" : ObjectId("4fe3901d0add2727c3adc7ca"), "tags" : [ "a", "b", "c" ] }
{ "_id" : ObjectId("4fe390220add2727c3adc7cb"), "tags" : [ "a", "b" ] }
{ "_id" : ObjectId("4fe390250add2727c3adc7cc"), "tags" : [ "a" ] }
{ "_id" : ObjectId("4fe390250add2727c3adc7cd"), "tags" : [ "c" ] }
Et mon code a été donné le tableau ["a", "b", "z"]
, je veux une requête qui produit le résultat suivant:
> db.foos.find(THE_QUERY!)
{ "_id" : ObjectId("4fe390220add2727c3adc7cb"), "tags" : [ "a", "b" ] }
{ "_id" : ObjectId("4fe390250add2727c3adc7cc"), "tags" : [ "a" ] }
Et ces documents ont été sélectionnés parce que les deux ["a", "b"]
et ["a"]
sont des sous-ensembles de ["a", "b", "z"]
.
non, cela ne produit pas ce qu'il cherche. –
@WesFreeman: Je l'ai changé pour l'opérateur $ in. Pour une raison quelconque, j'ai jeté un coup d'œil sur ses exemples et j'ai pensé qu'il voulait une intersection. $ – jdi
$ ne fait pas ce qu'il veut, car il renvoie le document avec "c" –