比较 Mongoose 查询中的 ObjectID

Comparing ObjectIDs in Mongoose Query

我正在尝试更新扩展的 Mongo 数据库中的每个文档。

我的计划是从最年轻、最近创建的文档开始,然后从那里开始,一个接一个地查询下一个最旧的文档。

问题是我的 Mongoose 查询跳过了在同一秒内创建的文档。我认为 than/less 比运算符更能处理在同一秒内生成的 _id。但是尽管现在数据库中有 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);

如果您阅读 MongoDB 文档,您会发现它取决于创建项目的过程 http://docs.mongodb.org/manual/reference/glossary/#term-objectid,因此,为了保证您的需要,您需要添加一个记录的日期戳并使用它代替 _id

发现错误。

在 Mongoose 查询中,我按 "id" 而不是“_id”排序