SaveLolliPoP
@SaveLolliPoP
1 / 0 = ∞

Как в монгоДБ изменить определенное поле у элемена в массиве?

{
    "_id": {
        "$oid": "5c738e04fe875703f8e05d82"
    },
    "contactPhones": [
        "+7"
    ],
    "leadId": "e527066e-ba54-78d1-dff8-a271de67cce1",
    "leadStatus": "attemptCommunicateLPR",
    "firmName": "Э",
    "contactName": "",
    "position": "",
    "contactEmail": "rou",
    "address": "Дос",
    "lprsName": "Руст",
    "comments": [],
    "tasks": [
        {
            "_id": {
                "$oid": "5c738e04fe875703f8e05d84"
            },
            "status": "started",
            "action": "call",
            "description": "У них ",
            "createdDate": "2019-02-25T06:34:27.971Z",
            "deadLineDate": "2019-02-26T06:30:14.000Z"
        }
    ],
    "link2gis": "https://2gis.ru,
    "createdDate": "2019-02-25T06:34:27.971Z",
    "__v": 0
}


Мне нужно изменить элемент массив tasks с определенным _id.
Я пытаюсь это сделать таким образом:

app.post('/changeStatus', function(req, res) {
    db.Lead.findOneAndUpdate({leadId: req.body.leadId},
        {$set: {'tasks.$[element].status' : 'finished' } },
        { arrayFilters: [ { "element": { _id: req.body.changedTask._id } } ] }
        ).then(data => {
            console.log(data);
        }, err => {
            console.log(err);
        })
});


Данные отправляю в таком формате:

this.myHttp.postHTTP('http://localhost:3000/changeStatus', {leadId: this.Lead.leadId, changedTask: task} )


Где в task объект, где содержится ключ _id

По итогу мне сервер не меняет мой объект в бд и возвращает начальный вариант. Что я делаю не так?
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
SaveLolliPoP
@SaveLolliPoP Автор вопроса
1 / 0 = ∞
router.post('/changeStatus', function(req, res) {
    db.Lead.findOneAndUpdate({'leadId': req.body.leadId, 'tasks._id': req.body.changedTask._id},
        {$set: {'tasks.$.status' : 'finished' } },
        ).then(data => {
            console.log(data);
        }, err => {
            console.log(err);
        })
});


Вот такой вид должен быть
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы