Обновление нескольких общих полей в документе - PullRequest
0 голосов
/ 25 октября 2018

Я храню информацию об уведомлениях в коллекции MongoDB.В моей коллекции я различаю несколько типов событий и экземпляров событий.Чтобы уменьшить нагрузку на базу данных, когда веб-интерфейс запрашивает данные, эта информация объединяется в один документ (который переходит в дополнительные документы после регистрации слишком большого числа событий).

Все события имеют атрибут status, которыйиспользуется для определения того, было ли событие прочитано / увидено пользователем.У пользователя есть возможность пометить все элементы одного или всех типов событий как прочитанные.

Я могу легко создать запрос на обновление, чтобы пометить все события определенного типа как прочитанные:

{"$set": {"notifications.IMPORT_SUCCEEDED.events.$[].status": "r"}}

Однако я хочу избежать перебора всех типов событий, чтобы пометить все события всех типов как прочитанные, поскольку этот список может быть довольно длинным (десятки типов событий) - есть ли возможность обновить все(под) ключи в документе (в основном, при замене типа события IMPORT_SUCCEEDED на подстановочный знак)По сути, я хотел бы сделать что-то вроде этого:

{"$set": {"notifications.${}.events.$[].status": "r"}}

Пример документа:

{ 
    "_id" : ObjectId("5bd1752877ada457400c182f"), 
    "count" : 1337.0, 
    "status" : "u", 
    "notifications" : {
        "IMPORT_FAILED" : {
            "count" : 1000.0, 
            "status" : "u", 
            "events" : [
                {
                    "text" : "bla", 
                    "status" : "u"
                }, 
                {
                    "text" : "bla", 
                    "status" : "u"
                }, 
                {
                    "text" : "bla", 
                    "status" : "u"
                }, 
                {
                    "text" : "bla", 
                    "status" : "u"
                }, 
                {
                    "text" : "bla", 
                    "status" : "u"
                }
            ]
        }, 
        "IMPORT_SUCCEEDED" : {
            "count" : 337.0, 
            "status" : "u", 
            "events" : [
                {
                    "text" : "bla", 
                    "status" : "r"
                }, 
                {
                    "text" : "bla", 
                    "status" : "r"
                }, 
                {
                    "text" : "bla", 
                    "status" : "r"
                }, 
                {
                    "text" : "bla", 
                    "status" : "r"
                }, 
                {
                    "text" : "bla", 
                    "status" : "r"
                }
            ]
        }
    }, 
    "reference_id" : 42.0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...