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

MongoDB $nin Operator zapytań

W MongoDB $nin operator zapytania wybiera dokumenty, w których wartość pola nie znajduje się w określonej tablicy lub w których pole nie istnieje.

Przykład

Załóżmy, że mamy kolekcję o nazwie products z następującymi dokumentami:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 3, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }
{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

Możemy użyć $nin operatora, aby wybrać tylko te dokumenty, które nie mają określonego _id wartości.

Przykładowy kod:

db.products.find({ 
  _id: { $nin: [ 1, 2, 3 ] } 
})

Wynik:

{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

W tym przypadku chcieliśmy tylko dokumentów, których nie zawierać _id wartość 1 , 2 lub 3 .

Przykład 2

Oto kolejny przykład. Tym razem używamy $nin na innym polu.

db.products.find({ 
  sizes: { $nin: [ "L" ] } 
})

Wynik:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

W tym przykładzie zastosowaliśmy $nin do sizes pole.

Zauważ, że dokument 6 został zwrócony, mimo że nie ma sizes pole. Jest to dokładnie zgodne z oczekiwaniami – jeśli pole nie istnieje, jest zawarte w $nin wyniki.

Porównanie różnych typów jest oceniane zgodnie z kolejnością porównania BSON.

Przykład agregacji

Możemy użyć tej samej składni przy użyciu $match operator potoku agregacji.

Przykładowy kod:

db.products.aggregate(
   [
     { $match: { _id: { $nin: [ 1, 2, 3 ] } } }
   ]
)

Wynik:

{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

I oto znowu podczas zapytania o sizes pole:

db.products.aggregate(
   [
     { $match: { sizes: { $nin: [ "L" ] } } }
   ]
)

Wynik:

{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

Wyrażenia regularne

Możesz użyć wyrażeń regularnych w zapytaniu, używając formularza /pattern/ .

Przykład:

db.products.find({ 
  sizes: { $nin: [ /^X/ ] } 
})

Wynik:

{ "_id" : 4, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 5, "prod" : "Jeans", "sizes" : null }
{ "_id" : 6, "prod" : "Shorts" }

W tym przykładzie zwracam wszystkie dokumenty, które nie mają sizes pole rozpoczynające się od X .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nie można utworzyć działającego projektu meteor.js na wędrującym pudełku

  2. $strLenBytes vs $strLenCP w MongoDB:Jaka jest różnica?

  3. Jakie mechanizmy bezpieczeństwa posiada Meteor?

  4. Znajdowanie rekordów mongoDB w partiach (przy użyciu adaptera mongoid ruby)

  5. Jak wyszukiwać różne wartości w Mongoose?