Mongodb: jak używać operatora and ($and) w zapytaniach


Możesz użyć operatora $and w MongoDB, aby wyszukiwać dokumenty spełniające wiele kryteriów.

Operator ten używa następującej podstawowej składni:

 db.myCollection.find({
  " $and ": [
    {" field1 ": " hello "},
    {" field2 ": { $gte : 10 }}
  ]
})

W tym konkretnym przykładzie wyszukuje wszystkie dokumenty w kolekcji o nazwie myCollection , gdzie pole 1 jest równe „witaj” , a pole 2 ma wartość większą lub równą 10.

Poniższe przykłady pokazują, jak zastosować tę składnię w praktyce w przypadku zespołu windykacyjnego z następującymi dokumentami:

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})

Przykład 1: Użyj operatora AND z dwoma polami

Poniższy kod pokazuje, jak znaleźć wszystkie dokumenty w kolekcji zespołów , w których pole „zespół” ma wartość „Spurs”, a wartość pola „punkty” jest większa lub równa 22:

 db.teams.find({
  " $and ": [
    {" team ": " Spurs "},
    {" points ": { $gte : 22 }}
  ]
})

To zapytanie zwraca następujące dokumenty:

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("6201824afd435937399d6b6d"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

Należy pamiętać, że każdy dokument w wynikach zawiera „Ostrogi” w polu zespołu i wartość większą lub równą 22 w polu punktów.

Przykład 2: Użyj operatora AND w przypadku więcej niż dwóch pól

Poniższy kod pokazuje, jak znaleźć wszystkie dokumenty w kolekcji zespołów , w których pole „zespół” nie jest równe „Mavs”, a wartość w polu „punkty” jest większa lub równa 22, a wartość w polu „zbiórki” » pole jest mniejsze niż 7:

 db.teams.find({
  " $and ": [
    {" team ": { $ne : " Mavs "}},
    {" points ": { $gte : 22 }},
    {" rebounds ": { $lt : 7 }}
  ]
})

To zapytanie zwraca następujący dokument:

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Należy pamiętać, że jest to jedyny dokument w zbiorze, który spełnia wszystkie trzy kryteria:

  • Pole „Zespół” nie jest równe „ Mavs
  • Pole „punkty” ma wartość większą lub równą 22
  • Pole „odbicia” ma wartość mniejszą niż 7

Uwaga : Pełną dokumentację funkcji $and znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak używać zapytania „NIE IN”.
MongoDB: Jak wyszukać „nie null” w określonym polu

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *