확장 된 Mongo 데이터베이스의 모든 문서를 업데이트하려고합니다.몽구스 쿼리의 ObjectID 비교
제 계획은 가장 젊고 가장 최근에 작성한 문서로 시작하여 다음으로 가장 오래된 문서를 하나씩 질의하여 다시 작성하는 것입니다.
문제는 내 Mongoose 쿼리가 동일한 초에 만들어진 문서를 건너 뛰는 것입니다. 나는 같은 초에 생성 된 _id에 대해 연산자가보다 크거나 작을 것이라고 생각했습니다. 그러나 데이터베이스에 현재 150 개의 문서가 있지만이 함수는 가장 오래된 문서에서 가장 오래된 문서까지 8 개의 루프만으로 가져옵니다. 당신은 MongoDB의 설명서를 읽어 보면
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에서 자동으로 인덱싱되지 않습니다. 그러나 _id는 생성 시간에 따라 자동으로 인덱싱됩니다. –