sql >> Database >  >> NoSQL >> MongoDB

MongoDB Vind Exact Array Match, maar de volgorde doet er niet toe

Het momenteel geaccepteerde antwoord garandeert GEEN exacte overeenkomst met uw array, alleen dat de grootte identiek is en dat de array ten minste één item deelt met de queryarray.

Bijvoorbeeld de vraag

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

zou de gebruiker in dat geval nog steeds kaushik teruggeven.

Wat u moet doen voor een exacte overeenkomst is het combineren van $size met $all , zoals zo:

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

Maar houd er rekening mee dat dit een erg dure operatie kan zijn, afhankelijk van uw hoeveelheid en structuur van gegevens. Aangezien MongoDB de volgorde van ingevoegde arrays stabiel houdt, is het misschien beter om ervoor te zorgen dat arrays in een gesorteerde volgorde staan ​​wanneer ze in de DB worden ingevoegd, zodat u kunt vertrouwen op een statische volgorde bij het opvragen.



  1. Auditlogboekregistratie voor MongoDB

  2. MongoDB $trim

  3. Memcached of Redis gebruiken op aws-elasticache

  4. Krijg een lijst met indexen in MongoDB