代码之家  ›  专栏  ›  技术社区  ›  Thiago P

子文档数组中的id是否保证在该数组中是唯一的

  •  1
  • Thiago P  · 技术社区  · 6 年前

    MongoDB

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

    这同样适用于那些子文档的id属性吗? 例如,如果我有

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

    我决定将另一个子文档添加到数组中,可以肯定的是,id字段将是唯一的,就像它在普通顶级文档中一样。

    1 回复  |  直到 6 年前
        1
  •  1
  •   JohnnyHK    6 年前

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

    然而,如所问 here ,可以在向数组中添加元素时手动实施此所需限制。

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