MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB Trova la corrispondenza esatta dell'array ma l'ordine non ha importanza

La risposta attualmente accettata NON garantisce una corrispondenza esatta sull'array, solo che la dimensione è identica e che l'array condivide almeno un elemento con l'array di query.

Ad esempio, la query

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

restituirebbe comunque l'utente kaushik in quel caso.

Quello che devi fare per una corrispondenza esatta è combinare $size con $all , in questo modo:

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

Ma tieni presente che questa può essere un'operazione molto costosa, a seconda della quantità e della struttura dei dati. Poiché MongoDB mantiene stabile l'ordine degli array inseriti, potresti cavartela meglio assicurandoti che gli array siano in ordine durante l'inserimento nel DB, in modo da poter fare affidamento su un ordine statico durante la query.