我正在尝试更新扩展的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);
答案 0 :(得分:2)
发现错误。
在Mongoose查询中,我按&#34; id&#34;进行排序。而不是&#34; _id&#34;
答案 1 :(得分:0)
如果您阅读MongoDB文档,您将看到它取决于创建项目的过程http://docs.mongodb.org/manual/reference/glossary/#term-objectid,因此,为了保证您需要的内容,您需要在记录中添加日期戳,使用它而不是_id