【问题标题】:$push and $set not executing simultaneously$push 和 $set 没有同时执行
【发布时间】:2016-11-25 15:44:06
【问题描述】:

$push$set 没有一起工作。 $push 对应的字段是附加值,但 $set 没有更新其字段对应的值

Parcel.findOneAndUpdate({
            $and: [{
                "parcelStatus.status": {
                    $ne: "undelivered"
                }
            }, {
                "_id": req.body.consignmentNumber
            }]
        }, {
            $push: {
                "request": {
                    reason: req.body.request[0].reason,
                    date: new Date(),
                    requestType: 'Changing delivery Address'
                }
            }
        }, {
            $set: {
                destAddress: req.body.destAddress
            }
        }, function(err, parcel) {
            console.log("oldParcel" + JSON.stringify(parcel));

【问题讨论】:

  • 第二个参数应该是修改对象。将$push$set 组合成一个对象。
  • 谢谢,请您修改一下,我是mongo的新手。

标签: node.js mongodb mongodb-query


【解决方案1】:

第三个参数是传递选项。你应该在第二个参数中使用$set$push

可以试试这个:

Parcel.findOneAndUpdate({$and :[{"parcelStatus.status": {$ne:"undelivered"}},{"_id" : req.body.consignmentNumber}]},
  {
    $push:{"request": {reason: req.body.request[0].reason,
      date: new Date(),
      requestType: 'Changing delivery Address'}},
    $set: {destAddress : req.body.destAddress}
  },
  {new:true}, 
  function(err, parcel) {
    console.log("newParcel" + JSON.stringify(parcel));
  })

【讨论】:

  • 非常感谢。
猜你喜欢
  • 1970-01-01
  • 2018-04-17
  • 2018-07-22
  • 2014-06-26
  • 2012-02-22
  • 2018-01-02
  • 2015-10-28
  • 2014-04-15
  • 1970-01-01
相关资源
最近更新 更多