Array dokumen yang disematkan di mongodb

Contoh di bagian ini menunjukkan filter yang dibuat di layanan Adapter atau notifikasi untuk mengkueri data dari larik dokumen yang disematkan

Gambar berikut adalah contoh data di MongoDB

Array dokumen yang disematkan di mongodb

Menentukan kondisi kueri pada bidang bersarang dalam larik dokumen yang disematkan

Contoh berikut memperlihatkan kondisi kueri yang mengembalikan semua dokumen di mana larik memiliki setidaknya satu dokumen tersemat yang berisi bidang yang cocok dengan kondisi kueri

Gambar berikut menunjukkan kondisi kueri yang mengembalikan semua dokumen di mana larik item memiliki satu dokumen tersemat yang berisi bidang itemId yang nilainya sama dengan 002 dan qty sama dengan 10 dan dokumen tersemat kedua dalam larik yang sama yang berisi bidang

Topik yang kami minati hari ini adalah tentang menanyakan dokumen yang disematkan di MongoDB. Dokumen dapat menyerap berbagai tingkat kerumitan. Biasanya, struktur database yang kompleks melibatkan banyak koleksi yang saling mengisi bersama dengan dokumen yang disematkan

Struktur yang kompleks ini terkadang mengakibatkan kesulitan dalam mengelola data. Individu, terutama yang baru mengenal pemrograman dan MongoDB bahkan mungkin mengalami kesulitan di awal. Untungnya, ada jalan keluar

Panduan ini akan membantu Anda dalam menanyakan dokumen yang disematkan di MongoDB terlepas dari seberapa besar data yang ada di database Anda. Saya akan menjelaskan dengan beberapa contoh untuk membantu Anda mempelajari kueri dokumen tersemat di MongoDB

Dalam contoh berikut kami mengambil semua dokumen yang memiliki dokumen tersemat persis { "warehouse": "W1", "qty": 100 } dalam larik inventory

Catatan. Urutan lapangan penting i. e. kolom pertama dari dokumen yang disematkan harus "gudang" dan harus memiliki nilai "W1" dan kolom kedua dari dokumen yang disematkan harus "qty" dan harus memiliki nilai 100

> db.books.find({ "inventory": { "warehouse": "W1", "qty": 100 } }).pretty();



{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c121"),
  "title" : "Node.js in Action",
  "author" : [
    "Marc Harter",
    "Nathan Rajlich",
    "T. J. Holowaychuk",
    "Mike Cantelon"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 100
    },
    {
      "warehouse" : "W3",
      "qty" : 250
    }
  ]
}

Jika kami mengubah urutan bidang dokumen yang disematkan dalam kueri, maka kami tidak akan mendapatkan hasilnya

Dalam kueri berikut, kami mengubah urutan bidang dokumen yang disematkan menjadi

> db.books.find({ "inventory": { "warehouse": "W1", "qty": 100 } }).pretty();



{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c121"),
  "title" : "Node.js in Action",
  "author" : [
    "Marc Harter",
    "Nathan Rajlich",
    "T. J. Holowaychuk",
    "Mike Cantelon"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 100
    },
    {
      "warehouse" : "W3",
      "qty" : 250
    }
  ]
}
0 dan tidak memberi kami hasil

> db.books.find({ "inventory": { "qty": 100, "warehouse": "W1" } }).pretty();

Pilih berdasarkan bidang dokumen yang disematkan dalam larik

Dalam contoh berikut, kami mengambil semua dokumen yang memiliki nilai "W1" untuk kolom "gudang" di salah satu dokumen tersemat di larik "inventaris"

> db.books.find({ "inventory.warehouse": "W1" }).pretty();


{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c11f"),
  "title" : "The C Programming Language",
  "author" : [
    "Brian Kernighan",
    "Dennis Ritchie"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 3000
    },
    {
      "warehouse" : "W2",
      "qty" : 750
    }
  ]
}
{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c121"),
  "title" : "Node.js in Action",
  "author" : [
    "Marc Harter",
    "Nathan Rajlich",
    "T. J. Holowaychuk",
    "Mike Cantelon"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 100
    },
    {
      "warehouse" : "W3",
      "qty" : 250
    }
  ]
}

Dalam contoh berikut, kami mengambil semua dokumen yang memiliki nilai lebih besar dari 300 untuk bidang "qty" untuk salah satu dokumen tersemat dalam larik "inventaris"

> db.books.find({ "inventory.qty": { $gt: 300 } }).pretty();


{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c11f"),
  "title" : "The C Programming Language",
  "author" : [
    "Brian Kernighan",
    "Dennis Ritchie"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 3000
    },
    {
      "warehouse" : "W2",
      "qty" : 750
    }
  ]
}
{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c120"),
  "title" : "MongoDB in Action",
  "author" : [
    "Kyle Banker"
  ],
  "inventory" : [
    {
      "warehouse" : "W2",
      "qty" : 100
    },
    {
      "warehouse" : "W3",
      "qty" : 1500
    }
  ]
}
_

Pilih berdasarkan beberapa kondisi kueri pada bidang dokumen yang disematkan

Dalam contoh berikut, kami mengambil semua dokumen yang memiliki bidang "qty" disetel lebih besar dari 100 dan bidang "gudang" disetel ke "W1"

> db.books.find({ "inventory": { $elemMatch: { "qty": { $gt: 100 }, "warehouse": "W1" } } }).pretty();


{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c11f"),
  "title" : "The C Programming Language",
  "author" : [
    "Brian Kernighan",
    "Dennis Ritchie"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 3000
    },
    {
      "warehouse" : "W2",
      "qty" : 750
    }
  ]
}

Dalam contoh berikut, kami mengambil semua dokumen yang memiliki bidang "qty" yang disetel ke nilai lebih besar dari 100 untuk salah satu dokumen yang disematkan

> db.books.find({ "inventory": { $elemMatch: { "qty": { $gt: 100 } } } }).pretty();



{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c11f"),
  "title" : "The C Programming Language",
  "author" : [
    "Brian Kernighan",
    "Dennis Ritchie"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 3000
    },
    {
      "warehouse" : "W2",
      "qty" : 750
    }
  ]
}
{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c120"),
  "title" : "MongoDB in Action",
  "author" : [
    "Kyle Banker"
  ],
  "inventory" : [
    {
      "warehouse" : "W2",
      "qty" : 100
    },
    {
      "warehouse" : "W3",
      "qty" : 1500
    }
  ]
}
{
  "_id" : ObjectId("5d2d9afd81a3cd0a9239c121"),
  "title" : "Node.js in Action",
  "author" : [
    "Marc Harter",
    "Nathan Rajlich",
    "T. J. Holowaychuk",
    "Mike Cantelon"
  ],
  "inventory" : [
    {
      "warehouse" : "W1",
      "qty" : 100
    },
    {
      "warehouse" : "W3",
      "qty" : 250
    }
  ]
}
_

Jika contoh berikut ini kita memilih semua dokumen yang memiliki bidang "qty" yang disetel ke nilai lebih besar dari atau sama dengan 200 atau bidang "gudang" disetel ke nilai "W1"

Bagaimana cara menambahkan array dokumen di MongoDB?

Dokumen di MongoDB adalah struktur data dengan objek mirip JSON yang memiliki pasangan bidang dan nilai. Untuk memasukkan dokumen ke dalam koleksi MongoDB, kita dapat menggunakan metode yang berbeda seperti insert(), insertOne() dan insertMany() .

Bagaimana cara menemukan dokumen tersemat di MongoDB?

Mengakses dokumen tersemat/bersarang – . using dot notation and when you are using dot notation, then the field and the nested field must be inside the quotation marks.

Bagaimana cara mencari berbagai dokumen di MongoDB?

Untuk mencari larik objek di MongoDB, Anda dapat menggunakan operator $elemMatch . Operator ini memungkinkan kita untuk mencari lebih dari satu komponen dari sebuah objek array.

Bisakah Anda memiliki array objek di MongoDB?

Direkomendasikan untuk menggunakan larik objek saat mendesain database MongoDB . Larik objek memungkinkan Anda untuk menyimpan beberapa item dalam satu bidang, dan memungkinkan Anda untuk dengan mudah menambah, menghapus, dan memodifikasi item individual di dalam larik.