У меня есть тысячи документов в этом формате:MongoDB: Удаление поля из ВСЕХ поддокументов в поле массива
{
"_id" : ObjectId("51e98d196b01c2085c72d731"),
"messages" : [
{
"_id" : ObjectId("520167056b01c20bb9eee987"),
"id" : ObjectId("520167056b01c20bb9eee987"),
},
{
"_id" : ObjectId("520167056b01c20bb9eee988"),
"id" : ObjectId("520167056b01c20bb9eee988"),
},
{
"_id" : ObjectId("520167056b01c20bb9eee989"),
"id" : ObjectId("520167056b01c20bb9eee989"),
}
],
}
Мне нужно удалить поле дубликата «ID». Это то, что я пробовал:
db.forum_threads.update({}, {$unset: {"messages.$.id": 1}}, {multi: true});
Это ошибка я получаю:
Cannot apply the positional operator without a corresponding query field containing an array.
У меня было предчувствие, что это невозможно. Думаю, мне нужно пойти по альтернативному маршруту, спасибо! – user1236803
Спасибо за объяснение, мне не хватало ". $." в статье $ unset. Неожиданным поведением является то, что он удаляет только атрибут из первого поддока, который он встречает, но это все еще помогает в ущемлении, я просто запускал его несколько раз, пока не удалил их все. – SteveO7