mongodb 内嵌数组 批量修改问题
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-02 09:19:52
0
4
999

对于一个文档结构为:

{
  "_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中文社区

曾经蜡笔没有小新
曾经蜡笔没有小新

membalas semua(4)
習慣沉默

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

changeState = function(doc){
    taskList = doc.taskList;
    for(var i in taskList){
        taskList[i].state = 'ST02';
    }
    db.test.save(doc)
}
 db.test.find({"_id" : ObjectId("57133995fb5f8930d0e9b81a")}).forEach(changeState)
 
 
 
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan