Bölüm 3: MongoDB - Koşullu Sorgu
Bu bölüm, MongoDB'nin koşullu sorgusunu tanıtır, bu, eşit, büyük veya küçük gibi karşılaştırma operatörlerine benzer SQL ifadelerine benzerdir.
MongoDB Tarafından Desteklenen Koşullu Operatörler
Operatör | Açıklama |
---|---|
$eq | Eşit, SQL'deki = operatörüne benzer |
$gt | Büyük, SQL'deki > operatörüne benzer |
$gte | Büyük eşit veya eşit, SQL'deki >= operatörüne benzer |
$in | Bir diziye karşılık gelen, herhangi bir değer, SQL'deki in sorgusuna benzer |
$lt | Küçük, SQL'deki < operatörüne benzer |
$nin | Dizide herhangi bir değere uymaz, SQL'deki not in operatörüne benzer |
Test Verileri
Envanter koleksiyon verileri aşağıdaki gibidir
{ _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 (Eşit Eşleşme)
db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )
// Kısaltılmış, $eq operatörü ihmal edilebilir, qty = 20
db.inventory.find( { qty: 20 } )
Eşdeğer SQL:
select * from inventory where qty = 20
// Bu sadece bir örnektir, SQL, item.name gibi iç içe alanların formatını desteklemez
select * from inventory where item.name = 20
$gt (Büyük Than)
db.inventory.find( { qty: { $gt: 20 } } )
Eşdeğer SQL:
select * from inventory where qty > 20
$gte (Büyük Than veya Eşit)
db.inventory.find( { qty: { $gte: 20 } } )
Eşdeğer SQL:
select * from inventory where qty >= 20
$in
Dizide bir değeri eşler
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
Eşdeğer SQL:
select * from inventory where qty in (5, 15)
$nin
$in operatörünün zıttı
db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
Eşdeğer SQL:
select * from inventory where qty not in (5, 15)
$lt (Küçük Than)
db.inventory.find( { qty: { $lt: 20 } } )
Eşdeğer SQL:
select * from inventory where qty < 20