мне нужно обновить документ MongoDB, который выглядит следующим образом:Update MongoDB документ с вложенными массивами поддокументами
{
"_id" : ObjectId("A"),
"participant" : "John Doe",
"roles" : [{
"roleId" : ObjectId("AA"),
"responsibilities" : [{
"_id" : ObjectID("AAA"),
"name" : "resp 1"
}, {
"_id" : ObjectID("AAB"),
"name" : "resp 2"
}]
}, {
"roleId" : ObjectId("AB"),
"responsibilities" : []
}]
}
Обновления приходят в двух формах:
- Удалить все роли суб- документы, которые имеют нулевые обязанности ... это должно удалить подпункт роли с _id = AB
- Добавить новую роль, если она еще не существует:
{ "roleId" : ObjectId("AC"), "responsibilities" : [] }
делает второе обновление, добавляет новую роль в документы, в которых вы удалили только субдокумент в первом обновлении? или вы используете только второе обновление для документов, у которых не было поддокумента с нулевыми обязательствами? – devonJS
@devonJS два действия обновления будут выполняться отдельно и не связаны друг с другом. Иногда мне может потребоваться добавить новые роли, и мне нужно убедиться, что эта роль еще не существует. Это может быть добавлено как ограничение по индексу, но мне по-прежнему необходимо выполнить проверку по другим причинам. В других случаях я хочу удалить подзапрос роли, только если роль имеет нулевые обязанности. –