sql >> Database >  >> NoSQL >> MongoDB

Vind documenten met een matrix die geen specifieke waarde bevat

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.



  1. Meteor mongo werkt geneste array bij

  2. MongoDB-gegevensmodellering gebruiken om doorvoerbewerkingen te verbeteren

  3. Hoe te updaten als het bestaat, anders een nieuw document invoegen?

  4. MongoDB:Vreselijke kaart Prestaties verminderen