子文档数组中的 _id 是否确保在该数组中是唯一的

Are _ids in a sub document array assured to be unique within that array

MongoDB

我知道如果你有一个子文档数组,并且你在这些子文档上索引了一些字段,那么该字段只能保证在整个集合中是唯一的,而不是在那个单个数组中。

这些子文档的 _id 属性 是否也是如此? 例如,如果我有以下

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

我决定向数组中添加另一个子文档,确保 _id 字段的唯一性与在常规顶级文档中的唯一性相同。

不,_id对子文档数组中的MongoDB没有特殊意义。

但是,正如 here 所要求的那样,您可以在向数组添加元素时手动强制执行此所需的限制。

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