Mongoose中的子文档和嵌套对象有什么区别?

在mongoose模式中有两种定义嵌套对象的方法

var childSchema = new Schema({ name: String, age: Number }) var parentSchema = new Schema({ children: [childSchema] }) 

 var parentSchema = new Schema({ children: [{ name: String, age: Number }] }) 

那他们有什么区别? 我该如何select使用哪一个?

一样。 在第二个版本中省childSchema式的childSchema定义只是一个替代的声明语法 。

唯一的区别是您是否有权访问子文档的模式对象(您在第二个版本中没有childSchema )。 使用第一个版本的一个原因是如果你需要在子模式上设置一个选项 ,如果你不想要这个选项的话,就可以禁止_id字段。

 var childSchema = new Schema({ name: String, age: Number }, { _id: false }); 

你不能用备用语法来做到这一点。