В MongoDB, используя драйвер C #, можно заменить ТОЛЬКО элемент встроенного массива, если он не был изменен с момента его первого извлечения.По сути, это будет «Обновить, если текущий» элемента встроенного массива.
Например, скажем, в STEP # 1 я получаю следующий документ:
{
"_id": {
"$oid": "4defe15e2a66bc11986859bb"
},
"widgets": [
{
"_id": "12312312",
"views": 3,
"comments": 7
},
{
"_id": "567567FF",
"views": 0,
"comments": 1
},
{
"_id": "890TT890",
"views": 2,
"comments": 8
}
],
"dtcreate": "Wed, 08 Jun 2011 16:53:51 GMT -04:00",
}
Затем в STEP #2 Я извлекаю объект виджета «12312312» и вносю в него некоторые изменения, чтобы обновленный виджет был:
{
"_id": "12312312",
"views": 5,
"comments": 9
}
Теперь в ШАГЕ № 3 я использую позиционный оператор для обновления только этого конкретного виджета в документе.
Здесь все работает хорошо, но единственная проблема в том, что я не знаю, произошло ли другое обновление с виджетом "12312312" между STEP # 1 и STEP # 3.
Что яПоиск - это простой способ отменить обновление в ШАГЕ № 3, если какое-либо обновление произошло с виджетом (или даже со всем документом, если это невозможно сделать на уровне виджета) между # 1 и # 3.