我有一个看起来像这样的集合
My Expected output is like :
category : [{
productCategory : masala
_id : ObjectId("589d595f6da20b72fe006ea9")
},
{
productCategory : dhal
_id : ObjectId("589d595f6da20b72fe006eaa")
}
现在我想更新一个'可用性' slot.id与给定查询匹配的字段。
当我想用此代码更新时
{
"_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
}
它会返回文档,应该表示它成功,但是&c;可用性'数据库中的字段仍未更新。
有谁知道为什么以及如何解决它?
**编辑: 我的意思是'可用性'即使我已将其设置为false,数据库上的字段仍设置为true。
答案 0 :(得分:1)
您可以使用new
option:
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);
}
});