Я пытаюсь обновить элементы в массиве с уникальными идентификаторами объектов (то есть добавить идентификатор объекта к объекту массива, в котором они отсутствуют)
Если в моей коллекции есть массив объектов рубашки, и я пытаюсь это сделать:
db.people.update({
$and : [
_id: ObjectId('5eeb44c6a042791d28a8641f'),
{
$or: [
{ 'shirts._id': { $eq:null } },
{ 'shirts._id':{ $exists:false } }
]
}
]
},{
$set: { 'shirts.$[]._id': new ObjectId() }
},{
"multi" : true
}
);
Он генерирует IDENTICAL ObjectsID для каждого элемента массива, но я бы добавил уникальный индекс для этого, однако, в случае использования, вероятно, не будет видно более 2-3 элементов в массиве с краевыми случаями, достигающими 5-6, что выглядит как злоупотребление индекса
Как я могу обновить несколько записей или несколько объектов массива с уникальным ObjectId?