【发布时间】:2015-03-01 01:14:46
【问题描述】:
我正在尝试更新扩展 Mongo 数据库中的每个文档。
我的计划是从最年轻、最近创建的文档开始,然后从那里开始工作,一个接一个地查询下一个最旧的文档。
问题是我的 Mongoose 查询跳过了在同一秒内创建的文档。我认为大于/小于运算符会在同一秒生成的 _ids 上起作用。但是虽然现在数据库中有 150 个文档,但这个函数只需要 8 个循环就可以从最年轻的文档到最老的文档。
这是我在递归节点循环中的 Mongoose 查询:
function loopThroughDatabase(i, doc, sizeOfDatabase){
if (i < sizeOfDatabase) {
(function(){
myMongooseCollection.model(false)
.find()
.where("_id")
.lt(doc._id)
.sort("id")
.limit(1)
.exec(function(err, docs) {
if (err) {
console.log(err);
}
else {
updateDocAndSaveToDatabase(docs[0]);
loopThroughDatabase(i + 1, docs[0], sizeOfDatabase); //recursion here
}
});
})();
}
}
loopThroughDatabase(1, youngestDoc, sizeOfDatabase);
【问题讨论】:
标签: node.js mongodb sorting mongoose objectid