現在受け入れられている回答は、配列が完全に一致することを保証するものではなく、サイズが同じであり、配列がクエリ配列と少なくとも1つのアイテムを共有していることだけを保証します。
たとえば、クエリ
db.coll.find({ "hobbies": { "$size" : 2, "$in": [ "2", "1", "5", "hamburger" ] } });
その場合でもユーザーkaushikを返します。
完全に一致させるために必要なことは、$size
を組み合わせることです。 $all
を使用 、そのように:
db.coll.find({ "hobbies": { "$size" : 2, "$all": [ "2", "1" ] } });
ただし、データの量と構造によっては、これは非常にコストのかかる操作になる可能性があることに注意してください。MongoDBは挿入された配列の順序を安定させているため、DBに挿入するときに配列がソートされた順序になるようにすると、うまくいく可能性があります。クエリを実行するときに静的な順序に依存できるようにします。