mongo shell脚本:等待更新操作

时间:2017-12-06 14:39:28

标签: mongodb mongo-shell

我编写了一个更新多个dbs和集合的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

1 个答案:

答案 0 :(得分:0)

原来db.getLastError()db.getLastErrorObj()正是我正在寻找的。

有些隐藏在文档https://docs.mongodb.com/v2.4/tutorial/write-scripts-for-the-mongo-shell/#differences-between-interactive-and-scripted-mongo

  

在脚本内部,显式调用db.getLastError()以等待写操作的结果。