sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB Find Exact Array Match, ale na pořadí nezáleží

Aktuálně přijatá odpověď NEZAJIŠŤUJE přesnou shodu ve vašem poli, pouze to, že velikost je identická a pole sdílí alespoň jednu položku s polem dotazů.

Například dotaz

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

by v takovém případě stále vrátil uživatele kaushik.

Co musíte udělat pro přesnou shodu, je zkombinovat $size s $all , asi takhle:

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

Uvědomte si však, že to může být velmi nákladná operace v závislosti na vašem množství a struktuře dat. Vzhledem k tomu, že MongoDB udržuje pořadí vkládaných polí stabilní, možná by vám bylo lépe zajistit, aby pole byla při vkládání do DB seřazená, takže se při dotazování můžete spolehnout na statické pořadí.



  1. MongoDB třídí dokumenty podle prvků pole

  2. Jaký je rozdíl mezi area a BoundingBox ze zdrojového kódu Redis

  3. 2 způsoby, jak získat velikost dokumentu v MongoDB

  4. mongoDB/mongoose:jedinečný, pokud není null