我正在运行下面的查询,它不工作。当我在mongo中运行查询部分时,它会返回我预期的结果。我正在使用UMongo。但是它没有按预期更新文档。
db.system.js.save ({
_id:"script_1",
value: function() {
print("in function>>");
db.data.find({"$and":
[{"title":{$regex : '.*Green Red.*', $options : 's'}},
{"editor.key": {"$in": ["74014","45339"]}}, {"types" : {"$in": ["Notes"]}}]}).forEach(
function(docMatch){
print("Matching document found");
db.data.update(docMatch,
{$set:{"editor.key": "05335","editor.value": "editor1",
"editor.email": "editor1@gmail.com"}
}, false, true);
}
);
db.data.reIndex();
}
});
db.eval("script_1()"); 我确实在mongo日志中看到了“找到的匹配文档”,但没有更新。下面的消息也显示在日志中。
Thu Sep 19 11:03:43 [conn1279] warning: ClientCursor::yield can't unlock b/c of recursive lock ns 谢谢你的帮助!
发布于 2013-09-19 16:38:44
如果没有您的数据和能够运行您的查询,我就不知道到底是什么问题。但是,这个代码有很多问题:
如果这是UMongo生成的代码,我建议离开UMongo,使用官方支持的mongo。
为了修复对更新的调用,尝试在mongo中运行类似的命令:
db.data.update(
{
"title": {$regex : '.*Green Red.*', $options : 's'},
"editor.key": {"$in": ["74014","45339"]},
"types" : "Notes"
},
{
$set: {
"editor.key": "05335",
"editor.value": "editor1",
"editor.email": "editor1@gmail.com"
}
},
false,
true
);https://stackoverflow.com/questions/18898431
复制相似问题