如果您有子文档数组,Mongoose会自动为每个数组创建ID . 例:
{ _id: "mainId" subdocArray: [ { _id: "unwantedId", field: "value" }, { _id: "unwantedId", field: "value" } ] }
有没有办法告诉Mongoose不为数组中的对象创建id?
这很简单,您可以在子模式中定义:
var mongoose = require("mongoose"); var subSchema = mongoose.Schema({ //your subschema content },{ _id : false }); var schema = mongoose.Schema({ // schema content subSchemaCollection : [subSchema] }); var model = mongoose.model('tablename', schema);
您可以创建没有架构的子文档,并避免使用_id . 只需将_id:false添加到子文档声明中即可 .
var schema = new mongoose.Schema({ field1:{type:String}, subdocArray:[{ _id:false, field :{type:String} }] });
这将阻止在您的subdoc中创建_id字段 . 在Mongoose中测试3.8.1
此外,如果您使用对象文字语法来指定子模式,您也可以添加 _id: false 来压缩它 .
_id: false
{ sub: { property1: String, property2: String, _id: false } }
我正在使用mongoose 4.6.3,而我所要做的就是在架构中添加_id:false,不需要创建子模式 .
{ _id: ObjectId subdocArray: [ { _id: false, field: "String" } ] }
在mongoose v.3中,现在您可以使用其他方法创建没有父母的子文档 - 子关系 . 而这些子文档将没有索引
var mongoose = require("mongoose"); var schema = mongoose.Schema({ // schema content subSchema: [{ firstname: 'sub name', lastname: 'last name' }] }); var model = mongoose.model('tablename', schema);
5 回答
这很简单,您可以在子模式中定义:
您可以创建没有架构的子文档,并避免使用_id . 只需将_id:false添加到子文档声明中即可 .
这将阻止在您的subdoc中创建_id字段 . 在Mongoose中测试3.8.1
此外,如果您使用对象文字语法来指定子模式,您也可以添加
_id: false
来压缩它 .我正在使用mongoose 4.6.3,而我所要做的就是在架构中添加_id:false,不需要创建子模式 .
在mongoose v.3中,现在您可以使用其他方法创建没有父母的子文档 - 子关系 . 而这些子文档将没有索引