2017-03-03 138 views
0

我想從Mongo記錄中獲取字段並將其值存儲在變量中。下面的查詢返回正確的記錄,但它也返回整個對象。我如何取得'sid'字段的價值?使用MongoDB字段值作爲變量

這裏是我的架構:

var SessionsSchema = mongoose.Schema({ 
     session: { 
     sid: String, 
     dataloop: { 
      timeStamp: Date, 
      sensorValues:{ 
       value: Number, 
       index: Number 
      } 
     } 
    } 
}); 

下面是該查詢&功能我使用的存儲值:

Sessions.find().sort({ 'sid' : -1 }).limit(1).exec(function(err, post) { 
    if(post == null){ 
     lastSession = post.sid; 
     sessionID = 1; 
    }else { 
     lastSession = post.sid; 
     sessionID = lastSession++; 
     } 
}); 

回答

1

find返回一個數組,而不是一個對象,你需要作爲數組訪問post。使用post[0]代替post

另外,post[0].sid將被定義,您需要使用它作爲post[0].session.sid

Sessions.find().sort({ 'sid' : -1 }).limit(1).exec(function(err, post) { 
    if(post.length===0){ 
     lastSession = post[0].session.sid; 
     sessionID = 1; 
    }else { 
     lastSession = post[0].session.sid; 
     sessionID = lastSession++; 
    } 
}); 
+0

該查詢只返回集合中的第一條記錄,它應該檢查整個集合中的SID字段,然後返回最高值。 – HjalmarCarlson

+0

這是行不通的。我需要在嵌入式文檔中指定字段位置。 – HjalmarCarlson