Operator Logika MongoDB
Operator logika MongoDB dapat digunakan untuk memfilter data berdasarkan kondisi tertentu. Operator ini menyediakan cara untuk menggabungkan beberapa kondisi. Setiap operator menyamakan kondisi yang diberikan dengan nilai benar atau salah.
Jenis-Jenis Operator Logika MongoDB dan Contohnya
1. $and: Digunakan untuk menggabungkan beberapa ekspresi logika dan memastikan bahwa semua ekspresi tersebut benar.
contoh penggunaan : db.products.find({ $and: [{ price: 899 }, { color: { $in: ["white", "black"] } }] }, { name: 1, price: 1, color: 1 })
Hasil :
2. $or: Digunakan untuk menggabungkan beberapa ekspresi logika dan memastikan bahwa setidaknya satu dari ekspresi tersebut benar.
contoh penggunaan : db.products.find({ $or: [{ price: 799 }, { price: 899 }] }, { name: 1, price: 1 })
hasil :
contoh penggunaan : db.products.find({ $or: [ { price: {$lt: 699} }, { price: {$gt: 799} } ] }, { name: 1, price: 1 })
hasil :
3. $not: Digunakan untuk membalikkan hasil pencarian. Misalnya, mencari dokumen yang tidak memenuhi suatu kondisi.
contoh penggunaan : db.products.find({ price: { $not: { $gt: 699 } } }, { name: 1, price: 1 })
hasil :
4. $nor: Digunakan untuk memeriksa apakah tidak ada satu pun dari ekspresi logika yang benar.
contoh penggunaan : db.products.find({ $nor :[ { price: 899}, { color: "gold"} ] }, { name: 1, price: 1, color: 1 })
hasil :
5. $exists: Digunakan untuk mencari dokumen berdasarkan keberadaan atau ketiadaan suatu field.
contoh penggunaan : db.products.find( { price: { $exists: true } }, { name: 1, price: 1 } )
hasil :
contoh penggunaan : db.products.find({ price: { $exists: true, $gt: 699 } }, { name: 1, price: 1 });
hasil :
contoh penggunaan : db.products.find({ price: { $exists: false } }, { name: 1, price: 1 });
hasil :
CREATE TABLE products (
id INT NOT NULL,
name VARCHAR(255)
NOT NULL,
price DECIMAL(10,
2),
releaseDate DATE,
ram INT,
screen DECIMAL(4,
2),
cpu DECIMAL(4, 2),
color
VARCHAR(255),
storage INT
);
CREATE TABLE product_colors (
product_id INT,
color VARCHAR(255),
FOREIGN KEY
(product_id) REFERENCES products(id)
);
Setelah tabel selesai dibuat, isi datanya sesuai perintah dibawah :
INSERT INTO products (id, name, price, releaseDate, ram, screen, cpu,
storage)
VALUES
(1, 'xPhone', 799.00, '2011-05-14', 4, 6.5, 2.66, 64),
(2, 'xTablet', 899.00, '2011-09-01', 16, 9.5, 3.66, 128),
(3, 'SmartTablet', 899.00, '2015-01-14', 12, 9.7, 3.66, 16),
(4, 'SmartPad', 699.00, '2020-05-14', 8, 9.7, 1.66, 128),
(5, 'SmartPhone', 599.00, '2022-09-14', 4, 9.7, 1.66, 128),
(6, 'xWidget', NULL, NULL, 64, 9.7, 3.66, 1024),
(7, 'xReader', NULL, NULL, 64, 6.7, 3.66, 128);
INSERT INTO product_colors (product_id, color)
VALUES
(1, 'white'),
(1, 'black'),
(2, 'white'),
(2, 'black'),
(2, 'purple'),
(3, 'blue'),
(4, 'white'),
(4, 'orange'),
(4, 'gold'),
(4, 'gray'),
(5, 'white'),
(5, 'orange'),
(5, 'gold'),
(5, 'gray'),
(6, 'black'),
(7, 'black'),
(7, 'white');
maka ada 2 tabel yang dihasilkan sebagai berikut :
1. Menggunakan $and (SQL):
SELECT name, price, color
FROM products
JOIN product_colors ON products.id = product_colors.product_id
WHERE price = 899
AND color IN ('white', 'black');
2. Menggunakan $or (SQL):
SELECT name, price
FROM products
WHERE price = 799 OR price = 899;
SELECT name, price
FROM products
WHERE price < 699 OR price > 799;
3. Menggunakan $not (SQL):
SELECT id AS _id, name, price
FROM products
WHERE price IS NULL OR NOT (price > 699);
SELECT name
FROM products
WHERE name NOT REGEXP '^Smart+';
4. Menggunakan $nor (SQL):
SELECT name, price, color
FROM products
LEFT JOIN product_colors ON products.id =
product_colors.product_id
WHERE (price IS NULL OR price != 899) AND (color IS NULL OR color != 'gold');
5. Menggunakan $exists (SQL):
SELECT name, price
FROM products
WHERE price IS NOT NULL OR price IS NULL;
SELECT name, price
FROM products
WHERE price IS NOT NULL AND price > 699;
SELECT name, price
FROM products
WHERE price IS NULL;
Komentar
Posting Komentar