Bab 3: MongoDB - Kueri Kondisional

Bab ini memperkenalkan kueri kondisional MongoDB, yang mirip dengan operator perbandingan seperti sama dengan, lebih besar dari, dan kurang dari dalam pernyataan SQL.

Operator Kondisional yang Didukung oleh MongoDB

Operator Deskripsi
$eq Sama dengan, mirip dengan operator = dalam SQL
$gt Lebih besar dari, mirip dengan operator > dalam SQL
$gte Lebih besar dari atau sama dengan, mirip dengan operator >= dalam SQL
$in Cocokkan sebuah array, salah satu nilai, mirip dengan kueri in dalam SQL
$lt Kurang dari, mirip dengan operator < dalam SQL
$nin Tidak cocokkan nilai mana pun dalam array, mirip dengan operator not in dalam SQL

Data Uji

Data koleksi inventory adalah sebagai berikut

{ _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 (Cocok Sama)

db.inventory.find( { qty: { $eq: 20 } } )
db.inventory.find( { "item.name": { $eq: "ab" } } )

// Diperpendek, bisa mengabaikan operator $eq, qty = 20
db.inventory.find( { qty: 20 } )

Setara dengan SQL:

select * from inventory where qty = 20
// Ini hanyalah contoh, SQL tidak mendukung format bidang bertingkat seperti item.name
select * from inventory where item.name = 20

$gt (Lebih Besar Dari)

db.inventory.find( { qty: { $gt: 20 } } )

Setara dengan SQL:

select * from inventory where qty > 20

$gte (Lebih Besar Dari atau Sama Dengan)

db.inventory.find( { qty: { $gte: 20 } } )

Setara dengan SQL:

select * from inventory where qty >= 20

$in (Di Dalam)

Cocokkan satu nilai dalam array

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )

Setara dengan SQL:

select * from inventory where qty in (5, 15)

$nin (Tidak di Dalam)

Kebalikan dari operator $in

db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )

Setara dengan SQL:

select * from inventory where qty not in (5, 15)

$lt (Kurang Dari)

db.inventory.find( { qty: { $lt: 20 } } )

Setara dengan SQL:

select * from inventory where qty < 20