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

MongoDB $in Query Operator

W MongoDB $in operator zapytania wybiera dokumenty, w których wartość pola jest równa dowolnej wartości w określonej tablicy.

$in operatora zapytania nie należy mylić z $in operator potoku agregacji, który zwraca wartość logiczną wskazującą, czy określona wartość znajduje się w tablicy.

Przykład

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

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

Możemy użyć $in operatora, aby wybrać tylko te dokumenty z określonym _id wartości.

Przykładowy kod:

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

Wynik:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }

W tym przypadku chcieliśmy tylko dokumentów, które zawierają _id wartość 1 , 2 lub 3 .

Przykład 2

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

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

Wynik:

{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

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

W tym przypadku pierwszy dokument miał wartość w postaci łańcucha, podczas gdy pozostałe dwa dokumenty miały ją jako element tablicy. Tak czy inaczej, wszystkie pasujące dokumenty zostały zwrócone.

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: { $in: [ 1, 2, 3 ] } } }
   ]
)

Wynik:

{ "_id" : 1, "prod" : "Shorts" }
{ "_id" : 2, "prod" : "Jeans", "sizes" : null }
{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }

I oto znowu podczas zapytania o sizes pole:

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

Wynik:

{ "_id" : 3, "prod" : "Shirt", "sizes" : "L" }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

Wyrażenia regularne

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

Przykład:

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

Wynik:

{ "_id" : 5, "prod" : "Bat", "sizes" : [ "S", "M", "XL", "XXL" ] }
{ "_id" : 6, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
{ "_id" : 7, "prod" : "Cap", "sizes" : [ "XS", "S", "M", "L", "XL" ] }

W tym przykładzie zwracam wszystkie dokumenty, które mają sizes pole z wartością, która jest ciągiem znaków zaczynającym się od X lub tablica, w której co najmniej jeden z elementów zaczyna się od X .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Niestandardowe kaskadowanie w Spring Data MongoDB

  2. Wyszukiwanie w mongo db przy użyciu mongoose regex vs. text

  3. Jak zaktualizować pola dokumentów MongoDB tylko wtedy, gdy nie istnieją?

  4. Jak wykonywać polecenia mongo za pomocą skryptów powłoki?

  5. Importuj dane CSV jako tablicę w MongoDB za pomocą mongoimport