Node.js 比较Mongoose查询中的ObjectId
我正在尝试更新正在扩展的Mongo数据库中的每个文档 我的计划是从最年轻的、最近创建的文档开始,然后从那里返回,逐个查询下一个最旧的文档 问题是,我的Mongoose查询正在跳过在同一秒内创建的文档。我认为大于/小于运算符将处理在同一秒内生成的_id。但是,尽管目前数据库中有150个文档,但该函数只在8个循环中从最年轻的文档到最老的文档 下面是递归节点循环中的Mongoose查询: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){
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会根据创建时间自动编制索引。