mongo shell 脚本:等待更新操作
mongo shell script: await update op
我写了一个 mongo shell 脚本来更新多个数据库和集合。但我注意到脚本在所有内容更新之前就退出了。有没有办法等到一个数据库上的更新操作完成后再转到下一个数据库进行更新?
这是一个小例子(不包含所有数据):
var mongoURL = 'localhost:27017';
var db1URL = mongoURL + '/db1';
var db2URL = mongoURL + '/db2';
var db1 = connect(db1URL);
var db2 = connect(db2URL);
db1.getCollection(col1).update(
{ "name": recName, "sources.name": oldCh}, {$set: {"sources.$.name": newCh}}
);
db2.getCollection(col2).update(
{ rec: recName, sources: oldCh}, {$set: { "sources.$": newCh}}
);
我需要 db2
的更新,等待 db1
的更新完成。换句话说,我不希望脚本在所有内容更新之前退出。这样执行脚本的操作员就可以确切地知道花了多长时间(因为我们每个数据库每个集合都有很多文档)
PS。使用 mongo 2.4
事实证明 db.getLastError()
或 db.getLastErrorObj()
完全符合我的要求。
Inside the script, call db.getLastError() explicitly to wait for the result of write operations.
我写了一个 mongo shell 脚本来更新多个数据库和集合。但我注意到脚本在所有内容更新之前就退出了。有没有办法等到一个数据库上的更新操作完成后再转到下一个数据库进行更新?
这是一个小例子(不包含所有数据):
var mongoURL = 'localhost:27017';
var db1URL = mongoURL + '/db1';
var db2URL = mongoURL + '/db2';
var db1 = connect(db1URL);
var db2 = connect(db2URL);
db1.getCollection(col1).update(
{ "name": recName, "sources.name": oldCh}, {$set: {"sources.$.name": newCh}}
);
db2.getCollection(col2).update(
{ rec: recName, sources: oldCh}, {$set: { "sources.$": newCh}}
);
我需要 db2
的更新,等待 db1
的更新完成。换句话说,我不希望脚本在所有内容更新之前退出。这样执行脚本的操作员就可以确切地知道花了多长时间(因为我们每个数据库每个集合都有很多文档)
PS。使用 mongo 2.4
事实证明 db.getLastError()
或 db.getLastErrorObj()
完全符合我的要求。
Inside the script, call db.getLastError() explicitly to wait for the result of write operations.