mongodb - 如何更新mongoDb文档中的所有键

标签 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
                        }
                    }
                }
            }
        }
    ]
}

最佳答案

您可以使用简短的 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

关于mongodb - 如何更新mongoDb文档中的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40108330/

相关文章:

javascript - 通过 mongos 和 javascript 插入数据

javascript - Mongoose 将请求对象传递给中间件

javascript - 无法弄清楚 mongod 和 nodejs 的 promise

Mongodb查询返回字段值

python - Pymongo如何更新数组中行的特定值

windows - 无法使用 mongodb 将 .js 文件导入 Rockmongo

mongodb - 在安全模式关闭时,什么情况下更改不会写入 MongoDB 数据库?

java - 从数组 MongoDB 获取唯一 ObjectId 的计数

java - 将来自 Web 服务的大型 JSON 数据插入 mongodb

mongodb - mongodb 的问题