var MongoClient = require("mongodb").MongoClient;
MongoClient.connect("mongodb://localhost:27017/test",function(err,db){
if(err) throw err;
var query = {};
var projection = {State : 1,Temperature : 1,_id : 1};
var options = {
sort : [["State","asc"],["Temperature","desc"]]
};
var state = "";
var temp = 0;
db.collection("weather").find(query,projection,options).each(function(err,doc){
if(err) throw err;
if(doc){
// Check if we have found a new state
if(state !== doc.State){
state = doc.State;
doc["month_high"] = true;
db.collection("weather").save(doc,function(err,saved){
if(err) throw err;
});
}
}else{
return db.close();
}
});
});
Это мой код, где мне необходимо обновить определенные документы, соответствующие критериям. Вместо того, чтобы хранить все документы, которые необходимо обновить, а затем обновлять их позже, я обновляю их по мере их поступления.Соединение MongoDB заканчивается преждевременно
Однако, я получаю MongoError: server localhost:27017 sockets closed
. Я знаю, это потому, что я пытаюсь использовать соединение, которое уже было закрыто.
Как правильно упорядочить закрытие базы данных и обновление документов?
«Проверьте, обрабатываете ли вы последний элемент». Невозможно узнать, является ли это последним элементом, если я не храню его в массиве, а затем проверяю индекс, чтобы увидеть, обрабатываю ли я последний элемент. Другого пути нет? :) –
«проверьте индекс, чтобы увидеть, обрабатываю ли я последний элемент». в значительной степени - я бы не знал ничего лучшего прямо сейчас. Стоит попытаться выяснить, исчезла ли ваша ошибка. – lazlojuly