MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Znajdź dokumenty z tablicą, która nie zawiera określonej wartości

Nic złego w tym, co w zasadzie próbujesz, ale być może jedynym wyjaśnieniem jest powszechne błędne przekonanie, że potrzebujesz operatorów takich jak $nin lub $in podczas zapytania o tablicę.

Również naprawdę musisz tutaj zrobić podstawowe dopasowanie nierówności za pomocą $ne :

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

Operatory „tablicy” nie służą do „tablic docelowych”, ale do dostarczania „listy” warunków do przetestowania w wygodnej formie.

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

Więc po prostu użyj normalnych operatorów dla pojedynczych warunków i zapisz $in i $nin gdzie chcesz przetestować więcej niż jeden warunek z pojedynczą wartością lub listą. Więc jest na odwrót.

Jeśli musisz przekazać „listę” argumentów, w których „żaden” z podanej listy nie pasuje do zawartości tablicy, odwracasz logikę za pomocą $not operator i $all operator:

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

Oznacza to, że w tablicy nie ma „żadnej z podanej listy”.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wysyłać zapytania do obiektów zagnieżdżonych?

  2. Łączenie się z bazami danych MongoDB

  3. Dodaj pole poza schematem z mangustą

  4. Warunkowa suma $ w MongoDB

  5. Wartość bezwzględna dzięki frameworkowi agregacji MongoDB