Вставка документа в документ, удовлетворяющий двум условиям - PullRequest
1 голос
/ 03 июня 2019

Я хочу вставить документ (массив) в уже существующий документ.

Я прошел через темы переполнения стека для вставки документа в документ.Я прочитал о $push и понял, но мое требование немного отличается.Итак, я хочу добавить - я хочу добавить цели для конкретного сотрудника, соответствующие конкретному проекту.

{
    "empCode": "001",
    "emapName": "ABC",
    "projects": [{
        "projectName": "P001",
        "projectMoreDetails": "projectMoreDetails",
        "Goals": [{
            "GoalName": "Goal1",
            "GoalMoreDetails": "GoalMoreDetails"
        }, {
            "GoalName": "Goal2",
            "GoalMoreDetails": "GoalMoreDetails"
        }]
    }, {
        "projectName": "P002",
        "projectMoreDetails": "projectMoreDetails",
        "Goals": [{
            "GoalName": "Goal1",
            "GoalMoreDetails": "GoalMoreDetails"
        }, {
            "GoalName": "Goal2",
            "GoalMoreDetails": "GoalMoreDetails"
        }]
    }]

}

Может кто-нибудь сказать, пожалуйста, как я могу добавить больше целей для проекта «P002» для кода сотрудника «001»?

1 Ответ

0 голосов
/ 03 июня 2019

Чтобы найти соответствующий документ, используйте:

{empCode:"001", projects:{$elemMatch:{"projectName":"P002"}}}

При обновлении вы можете использовать $ , чтобы получить соответствующий элемент массива.

Ваш окончательный запрос на обновлениебудет что-то вроде:

db.emp.update(
    {empCode:"001", projects:{$elemMatch:{"projectName":"P002"}}},
    {$push:{"projects.$.Goals":{GoalName:"Upvote"}}}
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...