Няма нищо лошо в това, което основно се опитвате, но може би единственото пояснение тук е често срещаното погрешно схващане, че имате нужда от оператори като $nin
или $in
при заявка за масив.
Също така наистина трябва да направите тук е основно съответствие с неравенството с $ne
:
Person.find({ "groups": { "$ne": group._id } })
Операторите „масив“ не са за „цели на масив“, а за предоставяне на „списък“ с условия за тестване в удобна форма.
Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })
Затова просто използвайте нормални оператори за единични условия и запазете $in
и $nin
за където искате да тествате повече от едно условие срещу една стойност или списък. Значи е точно обратното.
Ако трябва да предадете "списък" с аргументи, където "никой" от тези в предоставения списък съвпада със съдържанието на масива, тогава обръщате логиката с $not
оператор и $all
оператор:
Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })
Това означава, че „нито един от предоставения списък“ не присъства в масива.