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

Przykładowe operatory MongoDB

​​

Operatory warunkowe MongoDB określić warunek, któremu odpowiada wartość pola dokumentu.

Operatory zapytań porównawczych

  • $eq (równe)
  • $ne (nie równe)
  • $gt (więcej niż)
  • $lt (mniej niż)
  • $gte (więcej lub równe)
  • $lte (mniejszy lub równy)
  • $w definiuje tablicę wartości, z których jedna powinna mieć pole dokumentu
  • Nin $ definiuje tablicę wartości, która nie powinna mieć pola dokumentu

Na przykład znajdziemy wszystkie dokumenty, których wartość klucza wieku jest mniejsza niż 30:

db.users.find ({age: {$lt : 30}})

Użycie innych operatorów porównania będzie podobne. Na przykład ten sam klawisz, tylko ponad 30:

db.users.find ({age: {$gt : 30}})

Zauważ, że porównanie tutaj jest dokonywane na typach liczb całkowitych, a nie na ciągach. Jeśli wiek klucza reprezentuje wartości ciągu, porównanie należy przeprowadzić w wierszach:db.users.find ({wiek:{$gt:„30”}}), ale wynik będzie taki sam.

Ale wyobraźmy sobie sytuację, w której musimy znaleźć wszystkie objętości z wartością pola wieku większą niż 30, ale mniejszą niż 50. W tym przypadku możemy połączyć dwa operatory:

db.users.find ({age: {$gt : 30, $lt: 50}})

Znajdziemy użytkowników w wieku 22 lat:

db.users.find ({age: {$eq : 22}})

W skrócie jest to analogia do następnego zapytania:

db.users.find ({age: 22})

Operacja odwrotna – znajdź użytkowników, których wiek NIE MA 22:

db.users.find ({age: {$ne : 22}})

Operator $in definiuje tablicę możliwych wyrażeń i wyszukuje klucze, których wartość znajduje się w tablicy:

db.users.find ({age: {$in : [22, 32]}})

W odwrotny sposób, operator $nin definiuje tablicę możliwych wyrażeń i wyszukuje klucze, których wartości nie ma w tej tablicy:

db.users.find ({wiek:{$nin :[22, 32]}})

Operatory logiczne

Operatory logiczne są wykonywane w warunkach próbkowania:

  • $lub :łączy dwa warunki, a dokument musi spełniać jeden z tych warunków
  • $i: łączy dwa warunki, a dokument musi spełniać oba warunki
  • $nie: dokument NIE może odpowiadać warunkom
  • $nor: łączy dwa warunki, a dokument NIE może spełniać obu warunków

Przykładowe operatory MongoDB

Operator $or reprezentuje logiczną operację LUB i definiuje zestaw par klucz-wartość, które powinny być obecne w dokumencie. A jeśli dokument ma co najmniej jedną taką parę klucz-wartość, odpowiada temu zapytaniu i jest wyodrębniany z bazy danych:

db.users.find ({$or : [{name: "Tom"}, {age: 22}]})

To wyrażenie zwróci wszystkie dokumenty z imieniem=Tomek lub wiekiem=22.

Inny przykład zwróci wszystkie dokumenty z imieniem=Tom i wiekiem=22 lub z „niemieckim” wśród wartości językowych:

db.users.find ({name: "Tom", $or : [{age: 22}, {languages: "german"}]})

Operatory warunkowe mogą być używane w podwyrażeniach lub podwyrażeniach:

db.users.find ({$or : [{name: "Tom"}, {age: {$gte:30}}]})

W tym przypadku wybieramy wszystkie dokumenty, w których name=”Tom” lub pole wieku ma wartość 30 lub wyższą.

Operator $i

Operator $and reprezentuje operację logiczną AND (mnożenie logiczne) i definiuje zestaw kryteriów, które musi spełniać dokument. W przeciwieństwie do operatora $or dokument musi spełniać wszystkie określone kryteria. Na przykład:

db.users.find ({$and : [{name: "Tom"}, {age: 32}]})

Tutaj wybrane dokumenty muszą mieć imię Tom i wiek 32 – obie te cechy.

Przeszukiwanie tablicy MongoDB

Niektóre operatory są przeznaczone do pracy z tablicami:

  • $wszystkie: definiuje zestaw wartości, które powinny istnieć w tablicy
  • $rozmiar: określa liczbę elementów, które powinny znajdować się w tablicy
  • $elemMatch: określa warunek, któremu muszą odpowiadać elementy w tablicy

MongoDB $wszystkie

Operator $all definiuje tablicę możliwych wyrażeń i wymaga, aby dokumenty zawierały cały zdefiniowany zestaw wyrażeń. W związku z tym służy do przeszukiwania tablicy. Na przykład dokumenty mają szereg języków, w których przechowywane są języki obce używane przez użytkownika. Aby znaleźć wszystkie osoby, które mówią jednocześnie po angielsku i francusku, możemy użyć następującego wyrażenia:

db.users.find ({languages: {$all : ["english", "french"]}})

Operator $elemMatch

Operator $elemMatch pozwala wybrać dokumenty, w których tablice zawierają elementy spełniające określone warunki. Na przykład niech baza danych zawiera zbiór ocen użytkowników dla określonych kursów. Dodajmy kilka dokumentów:

db.grades.insertMany([{student: "Tom", courses:[{name: "Java", grade: 5}, {name: "MongoDB", grade: 4}]},
{student: "Alice", courses:[{name: "C++", grade: 3}, {name: "MongoDB", grade: 5}]}))

Każdy dokument ma tablicę, która z kolei składa się z zagnieżdżonych dokumentów.

Teraz znajdziemy uczniów, którzy mają ocenę powyżej 3 z kursu MongoDB:

db.grades.find({courses: {$elemMatch: {name: "MongoDB", grade: {$gt: 3}}}})

Rozmiar $ operatora

Operator $size służy do wyszukiwania dokumentów, w których tablice mają liczbę elementów równą wartości $size. Na przykład wyodrębnijmy wszystkie dokumenty, w których w tablicy laguages ​​znajdują się dwa elementy:

db.users.find ({languages: {$size:2}})

Takie zapytanie będzie odpowiadać np. następującemu dokumentowi:

{"name": "Tom", "age": 32, languages: ["english", "german"]}

Operator $istnieje

Operator $exists pozwala wyodrębnić tylko te dokumenty, w których określony klucz jest obecny lub nieobecny. Na przykład zwróć wszystkie dokumenty zawierające klucz firmy:

db.users.find ({company: {$exists:true}})

Jeśli określimy $exists jako parametr false, zapytanie zwróci nam tylko te dokumenty, które nie zawierają klucza firmy.

Rodzaj operatora

Operator $type wyodrębnia tylko te dokumenty, w których określony klucz ma wartość określonego typu, np. ciąg znaków lub liczbę:

db.users.find ({age: {$type: "string"}})
> db.users.find ({age: {$type: "number"}})

Operator $regex

Operator $regex określa wyrażenie regularne, któremu powinna odpowiadać wartość pola . Na przykład, niech nazwa pola musi mieć literę „b”:

db.users.find ({name: {$regex: "b"}})

Ważne jest, aby zrozumieć, że $regex nie przyjmuje tylko ciągów, ale wyrażeń regularnych, na przykład:name:{$regex:“om$”} – wartość nazwy musi kończyć się na “om”.

Samouczek MongoDB:tablicowe operatory zapytań ($all, $elemMatch, $size)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak obejść brak transakcji w MongoDB?

  2. Wyodrębniona agregacja MongoDB

  3. Node.js + MongoDB:wstaw jeden i zwróć nowo wstawiony dokument

  4. DbRef z Mongoose - mongoose-dbref czy zapełnij?

  5. Warunkowa suma $ w MongoDB