Mongodb создать представление с помощью агрегации - PullRequest
0 голосов
/ 12 февраля 2019

* Это мой пример коллекции, я создаю представление для всего активного состояния, и мне нужно заменить любой _subjects.V, который содержит слова «подтвердить / нет», на нулевое значение.

Я пытался использовать $addfields / project с фильтром, он либо удаляет элемент, либо добавляет нулевое значение для всех элементов.

Возможно, у меня будет еще несколько похожих изменений, которые будут добавлены на основе комбинированных значений K и V.*

{
_id: 1,
_status: "active",
_subjects: [{
    "K": "Maths",
    "V": "M010"
},
{
    "K": "Maths",
    "V": "M010"
},
{
    "K": "Maths",
    "V": "M011"
},
{
    "K": "Maths",
    "V": "M020"
},
{
    "K": "Maths",
    "V": "M050"
},
{
    "K": "Science",
    "V": "SC10"
},
{
    "K": "Science",
    "V": "SC99"
},
{
    "K": "Science2",
    "V": "Yet to confirm"
},
{
    "K": "Science2",
    "V": "Not available"
},
{
    "K": "English",
    "V": "EN010"
},
],
_schedule: {
    "start": ISODate("2019-01-01T00:00:00.000+0000"),
    "end": ISODate("2020-01-01T00:00:00.000+0000"),
    _sessions: [{
        "days": ["2019-01-02",
        "2019-01-05"]
    },
    {
        "optional": ["EN010"]
    }]
}
},
{
_id: 2,
_status: "active",
_subjects: [{
    "K": "Maths",
    "V": "M010"
},
{
    "K": "Maths",
    "V": "M030"
},
{
    "K": "Maths",
    "V": "M021"
},
{
    "K": "Maths",
    "V": "Yet to confirm"
},
{
    "K": "Maths",
    "V": "M050"
},
{
    "K": "Science",
    "V": "SC10"
},
{
    "K": "Science",
    "V": "SC99"
},
{
    "K": "Science2",
    "V": "Yet to confirm"
},
{
    "K": "Science2",
    "V": "Not available"
}],
_schedule: {
    "start": ISODate("2018-01-01T00:00:00.000+0000"),
    "end": ISODate("2020-01-01T00:00:00.000+0000"),
    _sessions: [{
        "days": ["2018-011-02",
        "2019-02-01",
        "2019-06-03"]
    },
    {
        "optional": []
    }]
},
    {
    _id: 4,
    _status: "expired",
    _subjects: [{
        "K": "Maths",
        "V": "M010"
    }],
    _schedule: {
        "start": ISODate("2015-01-01T00:00:00.000+0000"),
        "end": ISODate("2016-01-01T00:00:00.000+0000"),
        _sessions: [{
            "days": []
        },
        {
            "optional": []
        }]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...