Как правильно использовать позиционный оператор $ [] в неустановленной операции обновления? - PullRequest
0 голосов
/ 20 декабря 2018

Согласно документации mongodbs, позиционный оператор $ [] должен работать со всеми элементами массива, но не работает с $ unset.Он изменяет 0 документов

Мне нужно сделать это программно, но можно сделать это только вручную, развернув массив.

aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.$[].contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 0 }

aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.0.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 1633 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.1.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 517 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.2.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 180 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.3.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 87 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.4.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 23 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.5.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 10 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.6.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 3 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.7.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 1 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.8.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 1 }
aireclaimRs:PRIMARY> db.cases.updateMany({},{$unset: {"casoOriginal.people.9.contract":""}},{multi:true})
{ "acknowledged" : true, "matchedCount" : 2502, "modifiedCount" : 0 }

Ожидается: 1-я операция должна выполнить то же, что и следующие операциикомбинированный.

Результат: 1-я операция изменяет 0 документов, следующие операции отмены корректно изменяют документы.

...