停止Mongoose为子文档数组项目创build_id属性

如果你有子文档数组,Mongoose会自动为每一个创build一个id。 例:

{ _id: "mainId" subdocArray: [ { _id: "unwantedId", field: "value" }, { _id: "unwantedId", field: "value" } ] } 

有没有办法告诉Mongoose不要为数组中的对象创buildid?

很简单,你可以在子模式中定义这个:

 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); 

您可以创build没有模式的子文档,并避免_id。 只需将_id:false添加到您的子文档声明。

 var schema = new mongoose.Schema({ field1:{type:String}, subdocArray:[{ _id:false, field :{type:String} }] }); 

这将阻止在你的subdoc中创build一个_id字段。 在mongoose中testing3.8.1

此外,如果您使用对象文本语法来指定子模式,则也可以只添加_id: false来将其禁用。

 { sub: { property1: String, property2: String, _id: false } } 

我正在使用mongoose4.6.3,我所要做的就是在模式中添加_id:false,不需要创build子模式。

 { _id: ObjectId subdocArray: [ { _id: false, field: "String" } ] } 

现在在mongoosev.3中,您可以select创build没有父母 – 子女关系的子文件。 而这些子文档将不会有索引

 var mongoose = require("mongoose"); var schema = mongoose.Schema({ // schema content subSchema: [{ firstname: 'sub name', lastname: 'last name' }] }); var model = mongoose.model('tablename', schema); 
Interesting Posts