你好我有一个结构复杂的集合,这个结构中的文档在结构上是不同的。我想将所有键 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/