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