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