我正在拼命寻找一种使用node.js和本机mongodb驱动程序来传输整个集合的方法。我正在看这段代码:
var createAnalytics = function(db) {
db.collection('changelog', function(err, changes) {
assert.equal(null, err);
var lastChange, index = 0;
var changeCursor = changes
.find({
"activity": "patch",
"entityOrRelationKind": "company",
"customData._state": "published"
})
.sort({"userId": 1, "entityOrRelationId": 1})
.stream();
changeCursor.on('end', function() {
console.log(index);
db.close();
});
changeCursor.on('data', function(change) {
index++;
...
lastChange = change;
});
});
};
我得到的只是一个批次(在我的情况下是1000,但如果我将batchSize设置为5,我得到5)。我怎样才能获得下一批产品?我认为流API是为了遍历整个集合?我错过了什么?
提前一百万感谢
答案 0 :(得分:0)
好吧,我自己发现了它,你们大多数人都很清楚,但为了完整起见:如果你在这种情况下使用像我这样的复合搜索查询,你还需要创建一个索引。否则mongo需要将整个集合加载到内存中,因此只返回大约1 MB的文档。
这仍然存在如何在上述情况下获得下一批的问题。任何人吗?