如何查找和更新关键数据?

时间:2019-05-14 07:37:00

标签: javascript json mongodb

我在mongo集合中有一个像这样的文档:

{

"_id" :"sdsfsfd323323323ssd",
"data" : {
        "('State', 'Get-Alert', 'BLIST_1', 'MessageData')" : [
            "$B_Add-Server", 
            "$B_Pool1_0_Server"
        ],
        "('State', \"Get-Server -Server 'uds412'\"):[
            "$B_Add-Server", 
            "$B_Pool2_0_Server"
          ]
}

,我需要将“ uds412”更新为“ newValue”。

请帮助,如何查找和替换它?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以将有效的JSON对象转换为字符串,然后将字符串替换为新值,然后再次将其解析为有效的JSON对象。

obj={ ...YOUR JSON OBJECT... }

newobj = JSON.parse(JSON.stringify(obj).replace('uds412','newValue'))

答案 1 :(得分:0)

最后,我这样解决了, 问题是,我需要从键中找到子字符串并更新该键。

//首先查询文档

db.server_col.find().forEach(function (docs) {

    var tempData = {};
    var tempDataAr = [];

    for (var key in docs["data"]) {

        var find = /'uds412'/;

        if (key.match(find)) {
            tempDataAr = docs["data"][key]
            key = key.replace('uds412', 'newValue');
            tempData[key] = tempDataAr;
        } else {
            tempData[key] = docs["data"][key];
        }

    }
   print(tempData);
   // then you can update it
   db.server_col.update({ "_id" : ObjectId("sdfsfdafs")}, { $set: { 'data':tempData  } }, { multi: true })

});