[英]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.