sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Hitta Exact Array Match men ordningen spelar ingen roll

Det för närvarande accepterade svaret garanterar INTE en exakt matchning på din array, bara att storleken är identisk och att arrayen delar minst ett objekt med frågearrayen.

Till exempel frågan

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

skulle fortfarande returnera användaren kaushik i så fall.

Vad du behöver göra för en exakt matchning är att kombinera $size med $all , som så:

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

Men tänk på att detta kan vara en mycket dyr operation, beroende på din mängd och struktur av data. Eftersom MongoDB håller ordningen på infogade arrayer stabil kan du kanske klara dig bättre med att se till att arrays är i en sorterad ordning när du infogar i DB, så att du kan lita på en statisk ordning när du frågar.



  1. MongoDB $trunc

  2. Mongoose lovar dokumentation säger att frågor inte är löften?

  3. node.js lagrar objekt i redis

  4. Lista över MongoDB-datumoperatörer, metoder och variabler