Er is niets mis met wat je eigenlijk probeert, maar misschien is de enige verduidelijking hier de algemene misvatting dat je operators nodig hebt zoals $nin
of $in
bij het opvragen van een array.
Je moet hier ook een basisongelijkheidsmatch doen met $ne
:
Person.find({ "groups": { "$ne": group._id } })
De "array"-operators zijn niet voor "array-doelen" maar voor het leveren van een "lijst" met voorwaarden om in een handige vorm te testen.
Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })
Gebruik dus gewoon normale operatoren voor enkele voorwaarden en bespaar $in
en $nin
voor waar u meer dan één voorwaarde wilt testen tegen een enkele waarde of een lijst. Het is dus net andersom.
Als u een "lijst" met argumenten moet doorgeven waarbij "geen" van de argumenten in de opgegeven lijst overeenkomen met de inhoud van de array, keert u de logica om met de $not
operator en de $all
operator:
Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })
Dus dat betekent dat "geen van de opgegeven lijsten" aanwezig zijn in de array.