sql >> Base de Datos >  >> NoSQL >> MongoDB

coincidencia de matriz mongodb

Interesante... El problema es... que los operadores $in y $or se aplican a los elementos de la matriz con los que está comparando contra cada documento en la colección, no en los elementos de las matrices en los documentos... Para resumir su pregunta:desea que sea una coincidencia, si alguno de los documentos en la colección resulta ser un subconjunto de la matriz pasada. No puedo pensar en una manera de hacer esto a menos que intercambie su entrada y salida. Lo que quiero decir es... Tomemos tu primera entrada:

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

Considere poner esto en una colección temporal, por ejemplo, temp como:

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

Ahora itere sobre cada documento en la colección de prueba y 'búsquelo' en temp, con el operador $all para asegurarse de que esté completamente contenido, es decir, haga algo como esto:

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


¡Esta es definitivamente una solución! No estoy seguro si me falta algún otro operador que pueda hacer este trabajo.