簡體   English   中英

貓鼬-嵌套數組中的更新字段

[英]Mongoose - Update field in nested array

我有一個看起來像這樣的收藏

{
  "_id":ObjectId("58a5a40663d24e0498ecf5e1"),
  "picture":null,
  "close":{
    "hour":19,
    "minute":30
  },
  "open":{
    "hour":7,
    "minute":0
  },
  "location":{
    "latitude":-6.304718,
    "longitude":106.64337
  },
  "address":"abcd",
  "placeName":"xyz",
  "floor":[
    {
      "number":1,
      "slot":[
        {
          "id":"A1",
          "availability":true
        },
        {
          "id":"A2",
          "availability":true
        },
        {
          "id":"A3",
          "availability":true
        },
        {
          "id":"A4",
          "availability":true
        },
        {
          "id":"A5",
          "availability":true
        },
        {
          "id":"B1",
          "availability":true
        },
        {
          "id":"B2",
          "availability":true
        },
        {
          "id":"B3",
          "availability":true
        },
        {
          "id":"B4",
          "availability":true
        },
        {
          "id":"B5",
          "availability":true
        }
      ]
    },
    {
      "number":3,
      "slot":[
        {
          "id":"A1",
          "availability":true
        },
        {
          "id":"A2",
          "availability":true
        },
        {
          "id":"A3",
          "availability":true
        },
        {
          "id":"B4",
          "availability":true
        },
        {
          "id":"B5",
          "availability":true
        }
      ]
    }
  ],
  "__v":0
}

現在,我想更新slot.id與Give查詢匹配的“可用性”字段之一。

當我想用此代碼更新時

ParkingPlace.findOneAndUpdate({
  '_id': mongoose.Types.ObjectId(placeID),
  'floor': {
    $elemMatch: {
      'number': body.floor
    }
  },
  'floor.slot': {
    $elemMatch: {
      'id': body.slot
    }
  }
}, {
  $set: {
    'slot.$.availability': false
  }
}, function (err, docs) {
  if (err) {
    res.json(err);
  } else {
    res.json(docs);
  }
});

它返回文檔,這應該意味着成功,但仍然沒有更新數據庫中的“可用性”字段。

有誰知道為什么以及如何解決它?

**編輯:我的意思是即使我已經將其設置為false,數據庫上的“ availability”字段仍設置為true。

您可以使用new選項

新增:bool-如果為true,則返回修改后的文檔而不是原始文檔。 默認為false(在4.0中更改)

ParkingPlace.findOneAndUpdate({
  '_id': mongoose.Types.ObjectId(placeID),
  'floor': {
    $elemMatch: {
      'number': body.floor
    }
  },
  'floor.slot': {
    $elemMatch: {
      'id': body.slot
    }
  }
}, {
  $set: {
    'slot.$.availability': false
  }
}, {
  new: true
}, function (err, docs) {
  if (err) {
    res.json(err);
  } else {
    res.json(docs);
  }
});

暫無
暫無

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

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