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

Masukkan data dalam array bersarang di mongodb

Anda dapat memperbarui dokumen "penjualan" yang disematkan di dalam larik "act_mgr" dengan pernyataan pembaruan berikut:

> db.sales.update({"act_mgr.sales.last_interacted":"[email protected]"}, {$push:{"act_mgr.$.sales.agent":"[email protected]"}, $set:{"act_mgr.$.sales.last_interacted":"[email protected]"}})
> db.sales.find().pretty()
{
    "_id" : ObjectId("4f855061dd53351011000b42"),
    "act_mgr" : [
        {
            "sales" : {
                "agent" : [
                    "[email protected]",
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        }
    ],
    "email" : "[email protected]",
    "name" : "Aman",
    "sales" : [
        {
            "sno" : 1,
            "message" : "description",
            "status" : "open"
        },
        {
            "sno" : 12,
            "message" : "assad",
            "status" : "open"
        }
    ]
}
> 

Anda dapat menambahkan dokumen tersemat yang berisi informasi "pengembang" ke array seperti ini:

> db.sales.update({"_id" : ObjectId("4f855061dd53351011000b42")}, {$push:{"act_mgr":{ "developer" : {"agent" : ["[email protected]" ],  "last_interacted" : "[email protected]" } }}})
> db.sales.find().pretty()
{
    "_id" : ObjectId("4f855061dd53351011000b42"),
    "act_mgr" : [
        {
            "sales" : {
                "agent" : [
                    "[email protected]",
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        },
        {
            "developer" : {
                "agent" : [
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        }
    ],
    "email" : "[email protected]",
    "name" : "Aman",
    "sales" : [
        {
            "sno" : 1,
            "message" : "description",
            "status" : "open"
        },
        {
            "sno" : 12,
            "message" : "assad",
            "status" : "open"
        }
    ]
}
> 

Dokumentasi tentang pengubah $push dan $set dapat ditemukan di dokumentasi "Memperbarui":http ://www.mongodb.org/display/DOCS/Updating

Informasi lebih lanjut tentang membuat dan memperbarui dokumen yang disematkan dengan Mongo db dapat ditemukan di dokumentasi berjudul "Notasi Titik (Menjangkau Objek)"http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

Informasi tentang memperbarui dokumen yang disematkan menggunakan operator posisi "$" dapat ditemukan di bagian "Operator posisi $" dari dokumentasi "Memperbarui".
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

Sebuah kata peringatan:Umumnya lebih umum untuk memiliki semua dokumen yang disematkan cocok dengan struktur yang sama, sehingga dokumen yang disematkan individu dapat direferensikan dengan lebih mudah. Array "penjualan" Anda adalah contoh bagus untuk ini; setiap dokumen yang disematkan berisi kunci yang sama, "sno", "message", dan "status"

Namun, dokumen yang disematkan di dalam larik "act_mgr" Anda berisi kunci yang berbeda; yang pertama berisi "penjualan", dan yang kedua berisi "pengembang". Sebagai gantinya, mungkin pertimbangkan struktur berikut:

"act_mgr" : [
    {
        "title" : "sales",
        "agent" : [
            "[email protected]",
            "[email protected]"
        ],
        "last_interacted" : "[email protected]"
    },
    {
        "title": "developer",
        "agent" : [
            "[email protected]"
        ],
        "last_interacted" : "[email protected]"
    }
]

Sekarang, setiap dokumen yang disematkan berisi kunci yang sama, "title", "agent", dan "last_interacted".

Anda dapat memperbarui sub-dokumen dengan perintah berikut.

> db.sales.update({"act_mgr.title":"sales"}, {$push:{"act_mgr.$.agent":"[email protected]"}, $set:{"act_mgr.$.last_interacted":"[email protected]"}})

Mudah-mudahan ini akan memungkinkan Anda untuk membuat pembaruan yang Anda perlukan, dan mungkin memberi Anda beberapa pemikiran tentang desain skema. Semoga berhasil!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB memilih catatan berdasarkan dua kondisi

  2. Hasil kueri .find luwak berisi metadata kueri? tidak bisa secara manual memproyeksikan setiap properti koleksi, bagaimana cara mendapatkan dokumennya saja?

  3. Menautkan &Membuat Gabungan MongoDB Menggunakan SQL:Bagian 3

  4. kueri sql ke mongodb?

  5. Meteor $dan dengan $or