我有两个mongo命令,在我看来应该会产生相同的结果:
for(var i=0;i<1000;i++){db.test.insert({a:1}); db.getLastError({j:1, w:1});};
for(var i=0;i<1000;i++){db.test.insert({a:1}); db.runCommand({getLastError:1, j:1, w:1});};
两个命令都正确执行插入,然而,第二个命令cca慢100倍(500毫秒vs 45秒)。有谁知道,为什么会这样?只有当设置{j:1}时才会出现差异,所以它可能与某些日记问题有某种关系?
答案 0 :(得分:1)
第二个命令实际上正在等待日志提交,而第一个命令不是因此而是差异。使用getLastError shell帮助程序时,无法传入j选项。它应该是与getlasterror数据库命令的w参数对应的数字或字符串,如文档here所示。