簡體   English   中英

向嵌套的mongodb文檔添加或推送新對象

[英]Add or push new object to nested mongodb document

我似乎在Stack或Mongoose文檔中找不到答案。 如何將新對象添加到嵌套文檔中?

這是我當前的模式:

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

從客戶端接收到新數據后,我需要放入現有的會話文檔中,我已經嘗試了$ addToSet和$ push,但是都沒有給我正確的結果。

這是$ push:

Sessions.findOneAndUpdate(
                    { 'session.sid': sessionID },
                    { 
                        '$push:': {dataloop:{
                                timeStamp: datemilli,
                                sensorValues:{
                                     value: pressure,
                                     index: indexNum,
                                     sessionTime: relativeTime
                                }
                            }
                        }
                    },
                    function(err,loop) {
                        console.log(loop);
                    }
                )

這是我的預期輸出:

   _id:58bb37a7e2950617355fab0d
   session:Object
     sid:8
     dataloop:Object
        timeStamp:2017-03-04 16:54:27.057
        sensorValues:Object
          value:134
          index:18
          sessionTime:0
     dataloop:Object  // <----------NEW OBJECT ADDED HERE
        timeStamp:2017-03-04 16:54:27.059
        sensorValues:Object
          value:134
          index:18
          sessionTime:0
     dataloop:Object  // <----------ANOTHER NEW OBJECT
        timeStamp:2017-03-04 16:54:27.059
        sensorValues:Object
          value:134
          index:18
          sessionTime:0
   __v:0

如果您考慮更改架構以包括dataloop數組:

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

您可以在session.dataloop上使用$push來添加一個新的dataloop項目:

Sessions.findOneAndUpdate({ 'session.sid': sessionID }, {
        '$push': {
            'session.dataloop': {
                timeStamp: datemilli,
                sensorValues: {
                    value: pressure,
                    index: indexNum,
                    sessionTime: relativeTime
                }
            }
        }
    },
    function(err, loop) {
        console.log(loop);
    }
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM