MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Намерете документи с масив, който не съдържа конкретна стойност

Няма нищо лошо в това, което основно се опитвате, но може би единственото пояснение тук е често срещаното погрешно схващане, че имате нужда от оператори като $nin или $in при заявка за масив.

Също така наистина трябва да направите тук е основно съответствие с неравенството с $ne :

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

Операторите „масив“ не са за „цели на масив“, а за предоставяне на „списък“ с условия за тестване в удобна форма.

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

Затова просто използвайте нормални оператори за единични условия и запазете $in и $nin за където искате да тествате повече от едно условие срещу една стойност или списък. Значи е точно обратното.

Ако трябва да предадете "списък" с аргументи, където "никой" от тези в предоставения списък съвпада със съдържанието на масива, тогава обръщате логиката с $not оператор и $all оператор:

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

Това означава, че „нито един от предоставения списък“ не присъства в масива.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какъв е максималният брой фрагменти, които MongoDB може да има?

  2. Преведете Queryable<T> обратно към IMongoQuery

  3. Заявка на MongoDB с elemMatch за вложени данни от масив

  4. Как да приложим has_many :чрез връзки с Mongoid и mongodb?

  5. mongodb $ в лимит