MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

correspondance de tableau mongodb

Intéressant..Le problème est..les opérateurs $in et $or sont appliqués sur les éléments du tableau que vous comparez contre chaque document de la collection, et non sur les éléments des tableaux dans les documents.> du tableau passé. Je ne peux pas penser à un moyen de le faire à moins que vous n'échangez votre entrée et votre sortie. Ce que je veux dire, c'est...Prenons votre première entrée :

db.test.find( {a: [1,2,3,4]} );

Envisagez de placer ceci dans une collection temporaire, par exemple, temp comme :

db.temp.save( {a: [1,2,3,4]} );

Parcourez maintenant chaque document dans la collection de test et « trouvez-le » dans temp, avec l'opérateur $all pour vous assurer qu'il est entièrement contenu, c'est-à-dire, faites quelque chose comme ceci :

foreach(doc in test)
{ db.temp.find( { a: { $all: doc.a } } ); }


C'est certainement une solution de contournement ! Je ne sais pas s'il me manque un autre opérateur capable de faire ce travail.