Rozdział 3: MongoDB - Zapytanie Warunkowe
W tym rozdziale przedstawiono zapytanie warunkowe MongoDB, które jest podobne do operatorów porównania, takich jak równy, większy niż i mniejszy niż w instrukcjach SQL.
Operatory Warunkowe Obsługiwane przez MongoDB
Operator | Opis |
---|---|
$eq | Równy, podobny do operatora = w SQL |
$gt | Większy niż, podobny do operatora > w SQL |
$gte | Większy niż lub równy, podobny do operatora >= w SQL |
$in | Odpowiada tablicy, dowolnej wartości, podobnie jak zapytanie in w SQL |
$lt | Mniejszy niż, podobny do operatora < w SQL |
$nin | Nie odpowiada żadnej wartości w tablicy, podobny do operatora not in w SQL |
Dane Testowe
Dane kolekcji inventory są następujące:
{ _id: 1, item: { name: "ab", code: "123" }, qty: 15, tags: [ "A", "B", "C" ] }
{ _id: 2, item: { name: "cd", code: "123" }, qty: 20, tags: [ "B" ] }
{ _id: 3, item: { name: "ij", code: "456" }, qty: 25, tags: [ "A", "B" ] }
{ _id: 4, item: { name: "xy", code: "456" }, qty: 30, tags: [ "B", "A" ] }
{ _id: 5, item: { name: "mn", code: "000" }, qty: 20, tags: [ [ "A", "B" ], "C" ] }
$eq (Równe Dopasowanie)
db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )
// Skrócony zapis, można zignorować operator $eq, qty = 20
db.inventory.find( { qty: 20 } )
Odpowiednik SQL:
select * from inventory where qty = 20
// To tylko przykład, SQL nie obsługuje formatu zagnieżdżonych pól, takich jak item.name
select * from inventory where item.name = 20
$gt (Większy Niż)
db.inventory.find( { qty: { $gt: 20 } } )
Odpowiednik SQL:
select * from inventory where qty > 20
$gte (Większy Niż Lubi Równy)
db.inventory.find( { qty: { $gte: 20 } } )
Odpowiednik SQL:
select * from inventory where qty >= 20
$in
Odpowiada jednej wartości w tablicy
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
Odpowiednik SQL:
select * from inventory where qty in (5, 15)
$nin
Przeciwieństwo operatora $in
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
Odpowiednik SQL:
select * from inventory where qty not in (5, 15)
$lt (Mniejszy Niż)
db.inventory.find( { qty: { $lt: 20 } } )
Odpowiednik SQL:
select * from inventory where qty < 20