嗨,
我正在从节点 js 运行 eval 脚本,使nolock
true 禁用全局锁。我从 java 运行的相同 eval 脚本也使用 nolock true。
String jsFunction = "function(){"
+ "var uid = 12;"
+ "return refreshList(uid,false);}";
DBObject commandObj = new BasicDBObject();
commandObj.put("eval", jsFunction);
commandObj.put("nolock", true);
CommandResult status =db.command(commandObj);
db.eval("function (x, isoverwrite) { return refreshList(x, isoverwrite);}", [21,isoverwrite] ,{nolock:true}, function(err, result){
});
在 java 中运行脚本时,db 中没有锁定,我可以同时运行查询。但是在运行上述代码的节点 js 中,我无法同时执行其他进程。我无法在 mongodb 中看到锁定日志控制台也。我不知道为什么两者的行为都会发生变化。我也尝试在节点 js 中使用命令查询,但我遇到了同样的问题。