sql >> Databáze >  >> NoSQL >> MongoDB

Najděte dokumenty s polem, které neobsahuje konkrétní hodnotu

Na tom, o co se v podstatě pokoušíte, není nic špatného, ​​ale možná jediným vysvětlením je běžná mylná představa, že potřebujete operátory jako $nin nebo $in při dotazu na pole.

Také zde musíte udělat základní nerovnost s $ne :

Person.find({ "groups": { "$ne": group._id } })

Operátory „pole“ nejsou pro „cíle pole“, ale pro poskytování „seznamu“ podmínek k testování ve vhodné formě.

Person.find({ "groups": { "$nin": [oneId, twoId,threeId] } })

Stačí tedy použít normální operátory pro jednotlivé podmínky a ušetřit $in a $nin tam, kde chcete otestovat více než jednu podmínku proti jedné hodnotě nebo seznamu. Takže je to právě naopak.

Pokud potřebujete předat „seznam“ argumentů, kde „žádný“ z těch v poskytnutém seznamu neodpovídá obsahu pole, pak logiku obrátíte pomocí $not operátor a $all operátor:

Person.find({ "groups": { "$not": { "$all": [oneId,twoId,threeId] } } })

To tedy znamená, že v poli není přítomen „žádný z uvedených seznamů“.



  1. vnořená výjimka je redis.clients.jedis.exceptions.JedisConnectionException:Nelze získat zdroj z fondu

  2. E11000 duplicitní klíčový chybový index v mongodb mongoose

  3. Jaká je maximální velikost hodnoty, kterou můžete uložit v redis?

  4. Nelze spustit docker mongo image v systému Windows