sql >> Database teknologi >  >> NoSQL >> MongoDB

Find dokumenter med matrix, der ikke indeholder en bestemt værdi

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.



  1. Forskellen mellem dokumentbaserede og nøgle/værdibaserede databaser?

  2. Samlet $lookup Den samlede størrelse af dokumenter i matchende pipeline overstiger den maksimale dokumentstørrelse

  3. Indkapsling af Unicode fra redis

  4. Hvorfor anbefales det ikke at bruge lagrede funktioner på serversiden i MongoDB?