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í.