2017-03-03 4 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の代わりにpost[0]を使用してください。

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

関連する問題