Der er ikke noget galt med det, du dybest set forsøger, men måske er den eneste afklaring her den almindelige misforståelse, at du har brug for operatorer som $nin
eller $in
når du forespørger et array.
Også du virkelig skal gøre her er et grundlæggende ulighedsmatch med $ne
:
Person.find({ "groups": { "$ne": group._id } })
"Array"-operatorerne er ikke til "array-mål", men til at give en "liste" over betingelser, der skal testes i en bekvem form.
Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })
Så brug bare normale operatorer til enkelte forhold, og gem $in
og $nin
for hvor du vil teste mere end én betingelse mod enten en enkelt værdi eller en liste. Så det er bare omvendt.
Hvis du har brug for at sende en "liste" af argumenter, hvor "ingen" af dem på den angivne liste matcher indholdet af arrayet, vender du logikken om med $not
operatoren og $all
operatør:
Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })
Så det betyder, at "ingen af listen" er til stede i arrayet.