У меня в 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, но он не добавляет новый элемент, если его нет.Чего мне не хватает?