Operator Logika

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 :



contoh penggunaan : db.products.find({ name: { $not: /^Smart+/ } }, { name: 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 :



KUIS :

Buat database baru bernama e-commerce


buat tabel product dan product color pada database tersebut menggunakkan query berikut :

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