对于一个文档结构为:
{
"_id" : ObjectId("57133995fb5f8930d0e9b81a"),
"taskList" : [{
"taskId" : NumberLong(1),
"state" : "ST00",
"createTime" : ISODate("2016-04-17T07:21:58.424Z")
},{
"taskId" : NumberLong(2),
"state" : "ST00",
"createTime" : ISODate("2016-04-17T07:21:58.424Z")
},{
"taskId" : NumberLong(3),
"state" : "ST00",
"createTime" : ISODate("2016-04-17T07:21:58.424Z")
}]
}
taskList 长度不确定
如何批量对数组内容进行修改呢?
例如批量修改 "_id" : ObjectId("57133995fb5f8930d0e9b81a") 的 taskList 内嵌元素 的 state 字段 为 'ST02'
@Mongoing中文社区
Pernyataan kemas kini MongoDB hanya boleh mengemas kini elemen padanan pertama dalam tatasusunan pada satu masa. Beberapa idea:
1) Model semula, letakkan senarai tugas ke dalam jadual lain, dan kemudian gunakan rujukan untuk merujuknya. Jika anda mempunyai banyak keperluan
2) Mula-mula lakukan pertanyaan untuk mendapatkan panjang Senarai tugas, dan kemudian eja pernyataan kemas kini berdasarkan panjang ini:
var length = db.test.aggregate([{$project:{lenOfArray: {$size:"$taskList"}}}]).next().lenOfArray;
var updateObj = {};
untuk(var i=0;i<length;i++){
updateObj["taskList."+ i+".stat"] = "ST02";
}
db.test.update( { }, {$set: updateObj } );
Bagaimana untuk meletakkan gajah di dalam peti sejuk? Buka pintu, masukkannya, tutup pintu
Sama seperti ini, lalui tatasusunan ini dan ubah suai sendiri ~
Secara umumnya, ia adalah seperti ini
Mongodb pada masa ini tidak menyokong pengubahsuaian kelompok data terbenam Pada masa ini, ia hanya mengemas kini satu demi satu, tetapi anda boleh menulis kaedah JS untuk merangkumnya
Sama seperti di atas, gunakan kaedah js untuk mengubah suai setiap dokumen dan simpannya Contoh kod adalah seperti berikut