update objects example array node.js mongodb mongoose subdocument

node.js - objects - mongoose update



Detener a Mongoose para que cree la propiedad_id para elementos de matriz de documentos secundarios (5)

Si tiene matrices de subdocumentos, Mongoose crea automáticamente ids para cada una. Ejemplo:

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

¿Hay alguna manera de decirle a Mongoose que no cree identificadores para objetos dentro de una matriz?


Además, si utiliza una sintaxis literal de objeto para especificar un _id: false también puede agregar _id: false para suprimirlo.

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


En mongoose v.3 ahora tiene una forma alternativa de crear sub-documentos sin padres - relaciones con los niños. Y estos sub-documentos no tendrán índice

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


Es simple, puedes definir esto en el subschema:

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


Estoy usando mangosta 4.6.3 y todo lo que tuve que hacer fue agregar _id: falso en el esquema, sin necesidad de crear un subesquema.

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


Puede crear sub documentos sin esquema y evitar _id. Simplemente agregue _id: falso a su declaración de subdocumento.

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

Esto evitará la creación de un campo _id en su subdoc. Probado en Mongoose 3.8.1