как обновить значение во вложенном массиве в мангусте - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу обновить статус с "available" до "not Available", где hostelId - 5e7f5e42a1e1f215b419f1ff, roomNum - 101, а bedNum - 2. Поэтому я должен отфильтровать его, используя эти три условия.

Я использую Node.js для этого.

Это моя структура документа:

{
    "roomList": {
        "hostelId": "5e7f5e42a1e1f215b419f1ff",
        "roomDetails": [{
            "roomNum": "101",
            "beds": 5,
            "room": [{
                "bedNum": 1,
                "status": "available"
            }, {
                "bedNum": 2,
                "status": "available"
            }]
        }, {
            "roomNum": "301",
            "beds": 3,
            "room": [{
                "bedNum": 1,
                "status": "available"
            }]
        }, {
            "roomNum": "401",
            "beds": 2,
            "room": [{
                "bedNum": 1,
                "status": "available"
            }, {
                "bedNum": 2,
                "status": "available"
            }]
        }]
    }
}

Я использовал этот запрос, но он не обновляется

const id = req.params.id;
const roomNum = req.body.roomNum;
const bedNum = req.body.bedNum;
const status = req.body.status;

ManageRooms.findOneAndUpdate(
    {"roomList.hostelId": id,
     "roomList.roomDetails":{$elemMatch: {"roomNum": roomNum}},
     "roomList.roomDetails.$.room":{$elemMatch: {"bedNum": bedNum}}},
    {"$set": {"room.status": status}},
    {new: true})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...