比较Mongoose Query中的ObjectID

时间:2015-01-02 18:21:33

标签: node.js mongodb sorting mongoose objectid

我正在尝试更新扩展的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);

2 个答案:

答案 0 :(得分:2)

发现错误。

在Mongoose查询中,我按&#34; id&#34;进行排序。而不是&#34; _id&#34;

答案 1 :(得分:0)

如果您阅读MongoDB文档,您将看到它取决于创建项目的过程http://docs.mongodb.org/manual/reference/glossary/#term-objectid,因此,为了保证您需要的内容,您需要在记录中添加日期戳,使用它而不是_id