La réponse actuellement acceptée ne garantit PAS une correspondance exacte sur votre tableau, juste que la taille est identique et que le tableau partage au moins un élément avec le tableau de requête.
Par exemple, la requête
db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] } });
renverrait toujours l'utilisateur kaushik dans ce cas.
Ce que vous devez faire pour une correspondance exacte est de combiner $size
avec $all
, comme ceci :
db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] } });
Mais sachez que cela peut être une opération très coûteuse, en fonction de la quantité et de la structure de vos données. Étant donné que MongoDB maintient l'ordre des tableaux insérés stable, vous feriez peut-être mieux de vous assurer que les tableaux sont dans un ordre trié lors de l'insertion dans la base de données, afin que vous puissiez vous fier à un ordre statique lors de la requête.