Гарантируется ли, что _ids в массиве поддокументов уникальны в этом массиве

MongoDB

Я знаю, что если у вас есть массив поддокументов и вы индексируете какое-то поле в этих поддокументах, это поле гарантированно будет уникальным только в пределах всей коллекции, но не в этом единственном массиве.

Применимо ли то же самое к свойству _id этих поддокументов? Например, если у меня есть следующие

{
  _id: 'Parent ID',
  subdocArray: [
    {
      _id: 'Child ID 1'
    }
  ]
}

И я решаю добавить еще один дочерний документ в массив, я уверен, что поле _id будет уникальным так же, как оно было бы в обычном документе верхнего уровня.


person Thiago P    schedule 20.07.2018    source источник


Ответы (1)


Нет, _id не имеет особого значения для MongoDB в массиве поддокументов.

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

db.coll.update(
    {_id: 'Parent ID', 'subdocArray._id': {$ne: 'Child ID 1'}}, 
    {$push: {subdocArray: {_id: 'Child ID 1'}}})
person JohnnyHK    schedule 21.07.2018