MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Konsekuensi menggunakan $unwind pada array bersarang?

Itu selalu merupakan ide yang baik untuk menyadari sumber daya memori ketika $unwind ing karena replikasi data yang terjadi.

Menggunakan $match untuk mempersempit hasil ke dokumen tertentu yang Anda cari tentu saja merupakan salah satu cara untuk mengurangi jumlah memori yang diperlukan untuk menyimpan data yang dikembalikan.

Cara lain untuk mengurangi jejak memori adalah dengan $project . $project memungkinkan Anda untuk mengatur ulang dokumen dalam alur sehingga Anda hanya mengembalikan elemen yang Anda minati.

Untuk menggunakan contoh Anda,

{
  someInfo: "blah blah blah",
  answers: [
    {
      email: "[email protected]",
      values: [
        {value: 1, label: "test1"},
        {value: 2, label: "test2"}    
      ]
    },
    {
      email: "[email protected]",
      values: [
        {value: 6, label: "test1"},
        {value: 1, label: "test2"}    
      ]
    }
  ]
}

Dengan

db.collection.aggregate([{ $match: { <element>: <value> }}, { $project: { _id: 0, answers: 1}}])

akan menghapus someInfo dan atribut lain yang mungkin tidak Anda minati. Kemudian Anda dapat $project lagi setelah melepas lelah...

db.collection.aggregate([
   { $match: { <element>: <value> }},
   { $project: { _id: 0, answers: 1}},
   { $unwind: "$answers"},
   { $unwind: "$answers.tags"},
   { $project: { e: "$answers.email", v: "$answers.values"}}
])

akan mengembalikan hasil yang cukup ringkas seperti:

{ e: "[email protected]", v: { value: 1, label: "test1" } }
{ e: "[email protected]", v: { value: 2, label: "test2" } }
{ e: "[email protected]", v: { value: 6, label: "test1" } }
{ e: "[email protected]", v: { value: 1, label: "test2" } }

Meskipun nama atribut huruf tunggal mengurangi keterbacaan manusia, hal itu mengurangi ukuran data yang dibesar-besarkan oleh nama atribut yang berulang-ulang.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. bagaimana cara menambahkan nilai ke bagian atas array di mongodb?

  2. Setelah memutakhirkan PHP ke versi 7, mengapa saya tidak bisa menggunakan driver mongodb?

  3. Cara Menghapus koleksi Mongodb menggunakan nama koleksi di c#

  4. Menghapus catatan duplikat menggunakan MapReduce

  5. Struktur aplikasi sinkron di Node.js dan MongoDb