I asked myself, whether javascript (concerning mongoDB) waits for the execution of mongoDB processes.
For example:
Im inserting documents like
for (i=0; i<=myarray.length -1; i++)
{
db.mycol.insert(myarray[i]);
}
If I check the col status directly after that only see a few documents in the db or even 0. (e.g. instead of 100 only 29 or 0). When I execute the sleep() function with e.g. sleep(10000) I can see all may inserted documents.
So my question is, how can I make sure, that javascript waits for the complete insert? Or how can I measure that? At the moment I'm using
start = new Date().getTime();
for (i=0; i<=myarray.length -1; i++)
{
db.mycol.insert(myarray[i]);
}
end = new Date().getTime();
time = end - start;
But if the insert-process isn't completed, the measurement of that function seems senseless to me.
edit:
by using db.getLastError({w:1});
I receive to following error:
uncaught exception: getlasterror failed: { "singleShard" : "replica2/ip:port,ip:port", "n" : 0, "lastOp" : NumberLong("5824731790958395692"), "connectionId" : 111744, "assertion" : "wrong type for field (w) 3 != 2", "assertionCode" : 13111, "errmsg" : "db assertion failure", "ok" : 0 } failed to load: ... myscript.js