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

MongoDB Find Exact Array Match pero el orden no importa

La respuesta actualmente aceptada NO garantiza una coincidencia exacta en su matriz, solo que el tamaño es idéntico y que la matriz comparte al menos un elemento con la matriz de consulta.

Por ejemplo, la consulta

db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] }  });

aún devolvería el usuario kaushik en ese caso.

Lo que debe hacer para una coincidencia exacta es combinar $size con $all , así:

db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] }  });

Pero tenga en cuenta que esta puede ser una operación muy costosa, según la cantidad y la estructura de los datos. Dado que MongoDB mantiene estable el orden de las matrices insertadas, es posible que le vaya mejor si se asegura de que las matrices estén ordenadas al insertarlas en la base de datos. para que pueda confiar en un orden estático al consultar.