0
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