MongoDB - выполнение upsert для массива, если arrayFilters не удовлетворены - PullRequest
1 голос
/ 02 июля 2019

У меня в mongo хранится следующий документ:

{
"_id" : ObjectId("5d1a08d2329a3c1374f176df"),
"associateID" : "1234567",
"associatePreferences" : [ 
    {
        "type" : "NOTIFICATION",
        "serviceCode" : "service-code",
        "eventCode" : "test-template",
        "preferences" : [ 
            "TEXT", 
            "EMAIL"
        ]
    }, 
    {
        "type" : "URGENT_NOTIFICATION",
        "serviceCode" : "service-code",
        "eventCode" : "test-template",
        "preferences" : [ 
            "TEXT"
        ]
    }
]
}

В основном я пытаюсь запросить один из элементов массива associatePreferences на основе его типа, serviceCode и eventCode, и добавить новое значениев массив предпочтений.Однако, если такая комбинация типа, serviceCode и eventCode отсутствует, я хотел бы добавить новый элемент в массив associatePreferences с этими значениями.Это мой текущий запрос:

db.user_communication_preferences.update(
   {'associateID':'testassociate'}, 
   {$addToSet:{'associatePreferences.$[element].preferences':"NEW_VALUE"}}, 
   {arrayFilters:[{'element.serviceCode':'service-code-not-present', 'element.eventNameCode':'event-code-not-present','element.type':'URGENT_NOTIFICATION'}]}
)

Этот запрос работает, если все элементы arrayFilters присутствуют в элементе associatePreferences, но он не добавляет новый элемент, если его нет.Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...