Tidak ada yang salah dengan apa yang pada dasarnya Anda coba, tetapi mungkin satu-satunya klarifikasi di sini adalah kesalahpahaman umum bahwa Anda memerlukan operator seperti $nin
atau $in
saat menanyakan array.
Juga Anda benar-benar perlu lakukan di sini adalah kecocokan ketidaksetaraan dasar dengan $ne
:
Person.find({ "groups": { "$ne": group._id } })
Operator "array" bukan untuk "target array" tetapi untuk menyediakan "daftar" kondisi untuk diuji dalam bentuk yang nyaman.
Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })
Jadi gunakan saja operator normal untuk kondisi tunggal, dan simpan $in
dan $nin
untuk tempat Anda ingin menguji lebih dari satu kondisi terhadap nilai tunggal atau daftar. Jadi sebaliknya.
Jika Anda perlu meneruskan "daftar" argumen di mana "tidak ada" argumen dalam daftar yang disediakan cocok dengan isi array, maka Anda membalikkan logika dengan $not
operator dan $all
operator:
Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })
Jadi itu berarti "tidak satu pun dari daftar" yang tersedia ada dalam larik.