我正在尝试更新我的收藏regRecord的字段。我想遍历集合中的每个文档,并更新所有节点的_class字段。
这是我实际收藏的样子。我想更新每个对象的_class字段。这里的entry节点是array,而value节点是一个对象,我不能使用mongo的游标遍历value字段。当我尝试时出现错误,因为cursor.hasNext不是一个函数。
db.regRecord.find({ "_id" : "13f2ad1f-14c0-42f3-bc7e-a282a559c4f6" }).pretty();
{
"_id" : "13f2ad1f-14c0-42f3-bc7e-a282a559c4f6",
"entries" : [
{
"formId" : "556e3156-d2f1-4c78-a719-4b67ee71c5a1",
"value" : [
{
"termId" : "b987cc9b-433c-4463-835c-b776c4c1cc04",
"_class" : "111111111"
}
]
},
{
"formId" : "556e3156-d2f1-4c78-a719-4b67ee71c5a1",
"value" : [
{
"termId" : "b987cc9b-433c-4463-835c-b776c4c1c454",
"_class" : "45454545"
}
]
},
],
}
我写了下面的脚本进行更新,但是不起作用。该脚本仅更新集合的第一个节点,它不会遍历entrys数组的nest value字段。
db.regRecord.find({ "entries" : { $type:"object"}).forEach(function(doc){
printjson("Current Document ID -"+doc._id);
doc.entries.forEach(function(p){
if (p.value instanceof Object) {
db.regRecord.update(
{_id: doc_id ,"entries.formId":p.formId},
{$set:{"entries.$.value._class":"ABCCCCC"}}
);
}
});
});