Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 比较Mongoose查询中的ObjectId_Node.js_Mongodb_Sorting_Mongoose_Objectid - Fatal编程技术网

Node.js 比较Mongoose查询中的ObjectId

Node.js 比较Mongoose查询中的ObjectId,node.js,mongodb,sorting,mongoose,objectid,Node.js,Mongodb,Sorting,Mongoose,Objectid,我正在尝试更新正在扩展的Mongo数据库中的每个文档 我的计划是从最年轻的、最近创建的文档开始,然后从那里返回,逐个查询下一个最旧的文档 问题是,我的Mongoose查询正在跳过在同一秒内创建的文档。我认为大于/小于运算符将处理在同一秒内生成的_id。但是,尽管目前数据库中有150个文档,但该函数只在8个循环中从最年轻的文档到最老的文档 下面是递归节点循环中的Mongoose查询: function loopThroughDatabase(i, doc, sizeOfDatabase){

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

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

问题是,我的Mongoose查询正在跳过在同一秒内创建的文档。我认为大于/小于运算符将处理在同一秒内生成的_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);
函数loopThroughDatabase(i,doc,sizeOfDatabase){
如果(i
如果您阅读了MongoDB文档,您会发现它取决于创建项目的过程,因此,为了保证您所需要的,您需要向记录中添加一个日期戳,并使用该日期戳而不是找到的_id

错误


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

谢谢!实际上,我们在数据库中已经有了时间戳。但是时间戳在MongoDB中不会自动索引。但是_id会根据创建时间自动编制索引。