Я проходил курс mongodb и nodejs на MongoDBUniversity, и одна из задач - поиск документов с самой высокой зарегистрированной температурой для любого состояния, а затем добавление поля «month_high» в он. Я могу найти документы для состояния с самой высокой температурой, но не могу его обновить. Код выглядит следующим образом.Обновление не работает-NodeJs и MongoDB с использованием MongoClient
Может кто-нибудь сказать мне, что я могу сделать неправильно?
var MongoClient=require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/course',function(err,db){
var cursor=db.collection("weather").find();
cursor.sort({"State":1,"Temperature":-1});
var oldState,newState;
cursor.each(function(err,doc){
if(err)throw err;
if(doc==null){
return db.close();
}
newState=doc.State;
if(newState!=oldState){
var operator={'$set':{"month_high":true}};
var query={"_id":doc._id};
console.log(doc._id+" has temp "+doc.Temperature+" "+doc.State);
db.collection("weather").update(doc,operator,function(err,updated){
console.log("hi");//---->Never Logs
if(err)throw err;
// console.log(JSON.stringify(updated));
})
}
oldState=newState;
});
});
хорошо в соответствии с параметрами DOCS не является обязательным. Я все еще пробовал это, хотя, как вы сказали, но он по-прежнему остается неизменным. Ни одна из ошибок не была выбрана – Rasmus
Опционально, если вы не хотите предоставлять обратный вызов (опять же, согласно синтаксису в документах, но я думаю, что видел, что он использовал способ ты сделал). Что-то изменит, если вы удалите вызов 'db.close()'? –
вызов {db.close()} находится в цикле if ... поэтому я думаю, что это не должно иметь значения – Rasmus