我问自己,javascript(关于mongoDB)是否等待执行mongoDB进程。
例如:
我插入像
这样的文件for (i=0; i<=myarray.length -1; i++)
{
db.mycol.insert(myarray[i]);
}
如果我之后直接检查col状态,只能看到db中的一些文档甚至是0.(例如,而不是100只有29或0)。当我用例如执行sleep()函数时睡觉(10000)我可以看到所有可能插入的文件。
所以我的问题是,我怎样才能确定javascript是否等待完整插入?或者我该如何衡量呢?目前我正在使用
start = new Date().getTime();
for (i=0; i<=myarray.length -1; i++)
{
db.mycol.insert(myarray[i]);
}
end = new Date().getTime();
time = end - start;
但是如果插入过程没有完成,那么对我的测量似乎毫无意义。
编辑:
使用db.getLastError({w:1});
我收到以下错误:
未捕获的异常:getlasterror失败:{ “singleShard”:“replica2 / ip:port,ip:port”, “n”:0, “lastOp”:NumberLong(“5824731790958395692”), “connectionId”:111744, “断言”:“字段错误类型(w)3!= 2”, “assertionCode”:13111, “errmsg”:“db断言失败”, “好的”:0 } 无法加载:... myscript.js
答案 0 :(得分:1)
如果您想等到MongoDB写入数据,您可以使用您希望等待的任何选项调用getLastError
。
像这样:
start = new Date().getTime();
for (i=0; i<=myarray.length -1; i++) {
db.mycol.insert(myarray[i]);
}
db.getLastError({w:1});
end = new Date().getTime();
time = end - start;
答案 1 :(得分:1)
试试这个:db.getLastError({w: majority});