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();
}
});
});
这是我的代码,我必须更新符合条件的某些文档。而不是存储需要更新的所有文档,然后在以后更新它们,我会在它们到来时更新它们。
但是,我得到MongoError: server localhost:27017 sockets closed
。我知道这是因为我正在尝试使用已经关闭的连接。
如何正确排序数据库的关闭和更新文档?
答案 0 :(得分:1)
当您致电db.save()
db.close()
似乎仍在处理中
检查您是否正在处理最后一项,然后在db.close()
回调中致电db.save()
。