是mongoose生成的子文档_id唯一

时间:2018-01-16 15:13:11

标签: javascript node.js mongodb mongoose schema

使用以下mongoose架构

mongoose.Schema({
    world: String,
    color: [{ name: String }]
});

为我提供包含_id字段的子文档的文档。

{ _id: 'a9ec8475bf0d285e10ca8d42'
  world: 'matrix', 
  color: [
    { name: 'blue',  _id: '4a8c0e12135fa32e13db9ce9' },
    { name: 'red',   _id: '4a8c0a62254cd32e13db4ad8' },
    { name: 'white', _id: '4a8c04e2687ea32e13db1da7' }
]

我想知道这些子文档_id中的每一个是否在所有文档中都是唯一的,或者只是跨越它所在的嵌套级别。

编辑:子文档没有引用另一个集合,它是使用上面的普通mongoose模式创建的。

2 个答案:

答案 0 :(得分:0)

我假设子文档引用了另一个集合。 如果我的假设是正确的,那么您拥有的嵌套文档仅在嵌套级别上是唯一的。

答案 1 :(得分:0)

这是Mongoose的一个问题。 Mongoose为幕后的每个嵌套对象创建模式。这意味着_id只在嵌套级别上是unquie。

Look at this previous question关于如何防止这种情况发生