Как правильно использовать позиционный оператор $[ ] в неустановленной операции обновления?

Согласно документации 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 документов, следующие операции отмены корректно изменяют документы.

0 ответов

Другие вопросы по тегам