如何更新mongoDb文件中的所有键

时间:2016-10-18 12:30:58

标签: mongodb

您好我有一个具有复杂结构的集合,并且此结构中的文档在结构上是不同的。我想更新所有密钥V,使其在此集合中具有值0。 例如:

   {
    "_id" : ObjectId("5805dfa519f972b200ea2955"),
    "s" : {
        "id" : NumberLong(36435)
    },
    "a" : [ 
        {
            "XX-(random value)" : {
                "V" : 4
            },
            "V" : 4,
            "u" : {
                "YY-(random value)" : {
                    "V" : 4,
                    "ZZ-(random value)" : {
                        "V" : 4,
                        "WW-(random value)" : {
                            "V" : 4
                        }
                    }
                }
            }
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

您可以使用简短的JavaScript进行此操作。您需要遍历每个文档的每个属性,检查属性的名称。如果它与名称“V”匹配,则使用值0更新它。这可以使用循环递归完成。以下javascript代码应该是必要的:

function checkProperties(doc) {
    for (var propertyName in doc) {
        if (typeof doc[propertyName] == "object") {
            checkProperties(doc[propertyName]);
        } else {
            if (propertyName == "V") {
                doc[propertyName] = 0;
                print(doc[propertyName]);
            }
        }
    }
}

db.<your_collection_name>.find({}).forEach(function(doc) {
    checkProperties(doc);
    db.<your_collection_name>.save(doc);
});

如果您将此代码保存在.js文件中,则可以针对您的mongo数据库运行它:

> mongo --host <host> --port <port> <script_name>.js