MongoDB:如何确保Javascript正在等待进程?

时间:2012-12-11 22:55:16

标签: javascript mongodb benchmarking wait measurement

我问自己,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

2 个答案:

答案 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});