您好我有一个具有复杂结构的集合,并且此结构中的文档在结构上是不同的。我想更新所有密钥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
}
}
}
}
}
]
}
答案 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