Berbeda dengan SQL, MongoDB ada cara query tersendiri untuk mengolah data. Tabel di MongoDB biasa disebut collection dan query untuk mencari data tertentu disebut sebagai criteria.

Untuk instalasi MongoDB dapat dilihat melalui postingan sebelumnya tentang cara instalasi dan menjalankan MongoDB.

Berikut ini adalah query MongoDB yang sering saya gunakan dan akan terus saya update jika ada yang baru.

Mencari Data Dalam Suatu List atau Array

Misal ada kolom berisi data suatu array.

{
  name: "Example Name",
  description: [
    {
      language: "id",
      detail: "contoh deskripsi"
    },
    {
      language: "en",
      detail: "example description"
    }
  ]
}

Query MongoDB mencari detail description berisi “example description”.

db.getCollection('example_collection').findOne({"description.detail": "example description"})

Hapus Satu Baris

Contoh query menghapus baris dengan menggunakan ID.

// Hapus satu baris
db.getCollection('example_collection').remove({_id: ObjectId("5bf70ac567f041b69724f910")})

// Hapus semua baris, tapi tidak menghapus collection / tabel
db.getCollection('example_collection').remove({})

Hapus Suatu Data Dalam List atau Array

Misal ada data seperti berikut:

{
  name: "Example Name",
  description: [
    "hello",
    "world"
  ]
}

Query MongoDB untuk menghilangkan “hello”.

db.getCollection('example_collection').update({ _id: ObjectId("5d892ab3e9e671026a904938")}, {$pull: {description: "hello"}})

Ubah / Update Data

Query ubah data berdasarkan suatu ID dan mengubah isi dari exampleColumn.

// update satu baris
db.getCollection('example_collection').updateOne({_id: ObjectId("5d8927e1a344a7b795a19746")}, {$set: {exampleColumn: "new value"}})

// update banyak baris
db.getCollection('example_collection').updateMany({someColumn: {$eq: null}}, {$set: {exampleColumn: "new value"}})

Mencari Data yang Tidak Memiliki Kolom Tertentu / Tidak Exists

Dengan menggunakan {$exists: false} dapat dicari semua baris yang tidak memiliki kolom tersebut.

db.getCollection('example_collection').find({name: "example", exampleColumn: {$exists: false}})

Mencari Kolom yang Exists, Namun Berisi Null

Query untuk mencari semua baris yang memiliki exampleColumn berisi null.

db.getCollection('example_collection').find({name: "example", exampleColumn: {$eq: null}})

Mencari Kolom yang Tidak Exists atau Berisi Null

Query berikut untuk mencari semua baris yang memiliki exampleColumn berisi null atau semua baris yang tidak memiliki exampleColumn.

db.getCollection('example_collection').find({name: "example", exampleColumn: null})

Mencari Kolom yang Exists dan Tidak Berisi Null

Query untuk mencari semua baris yang memiliki exampleColumn tidak berisi null.

db.getCollection('example_collection').find({name: "example", exampleColumn: {$ne: null}})

Menampilkan Semua Data yang Memiliki Value yang Diinginkan Lebih Dari Satu

Query untuk mencari semua baris yang memiliki kolom name berisi hello dan world.

db.getCollection('example_collection').find({name: {$nin: ["hello", "world"]}})

Replace String Suatu Kolom Pada Semua Baris Dengan Criteria Tertentu

Misal ada collection MongoDB dengan data sebagai berikut.

{
  name: "Example MongoDB document",
  description: [
    {
      language: "id",
      detail: "contoh sub-dokumen MongoDB"
    },
    {
      language: "en",
      detail: "example sub-document MongoDB"
    }
  ]
}

Berikut ini adalah contoh mencari semua description.detail yang mengandung kata contoh dan diganti dengan example.

db.getCollection('example_document').find({"description.detail": /contoh/i}).forEach(function(myVar) {
  myVar.description.detail = myVar.description.detail.replace("contoh", "example");
  db.example_document.save(myVar);
});

Hapus Semua Baris Berdasarkan Criteria Tertentu

Dengan menggunakan contoh collection sebelumnya, berikut ini adalah contoh mencari semua description.detail yang mengandung kata contoh dan menghapus baris tersebut.

db.getCollection('example_document').find({"description.detail": /contoh/i}).forEach(function(myVar) {
  db.example_document.remove(myVar);
});