Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

464
Vistas
Objetos anidados en esquemas de mangosta

He visto muchas respuestas a esta pregunta aquí, pero todavía no las entiendo (tal vez porque usan ejemplos más "complejos")... Entonces, lo que estoy tratando de hacer es un esquema para un "Cliente", y tendrá dos campos que tendrán "subcampos" anidados, y otros que podrán repetirse. esto es lo que quiero decir:

 let customerModel = new Schema({ firstName: String, lastName: String, company: String, contactInfo: { tel: [Number], email: [String], address: { city: String, street: String, houseNumber: String } } });

tel y email pueden ser una matriz. y la dirección no se repetirá, pero tendrá algunos subcampos como puede ver.

¿Cómo puedo hacer que esto funcione?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

const mongoose = require("mongoose"); // Make connection // https://mongoosejs.com/docs/connections.html#error-handling mongoose.connect("mongodb://localhost:27017/test", { useNewUrlParser: true, useUnifiedTopology: true, }); // Define schema // https://mongoosejs.com/docs/models.html#compiling const AddressSchema = mongoose.Schema({ city: String, street: String, houseNumber: String, }); const ContactInfoSchema = mongoose.Schema({ tel: [Number], email: [String], address: { type: AddressSchema, required: true, }, }); const CustomerSchema = mongoose.Schema({ firstName: String, lastName: String, company: String, connectInfo: ContactInfoSchema, }); const CustomerModel = mongoose.model("Customer", CustomerSchema); // Create a record // https://mongoosejs.com/docs/models.html#constructing-documents const customer = new CustomerModel({ firstName: "Ashish", lastName: "Suthar", company: "BitOrbits", connectInfo: { tel: [8154080079, 6354492692], email: ["asissuthar@gmail.com", "contact.bitorbits@gmail.com"], }, }); // Insert customer object // https://mongoosejs.com/docs/api.html#model_Model-save customer.save((err, cust) => { if (err) return console.error(err); // This will print inserted record from database // console.log(cust); }); // Display any data from CustomerModel // https://mongoosejs.com/docs/api.html#model_Model.findOne CustomerModel.findOne({ firstName: "Ashish" }, (err, cust) => { if (err) return console.error(err); // To print stored data console.log(cust.connectInfo.tel[0]); // output 8154080079 }); // Update inner record // https://mongoosejs.com/docs/api.html#model_Model.update CustomerModel.updateOne( { firstName: "Ashish" }, { $set: { "connectInfo.tel.0": 8154099999, }, } );
over 4 years ago · Santiago Trujillo Denunciar

0

// address model var addressModelSchema = new Schema({ city: String, street: String, houseNumber: String }) mongoose.model('address',addressModelSchema ,'address' ) // contactInfo model var contactInfoModelSchema = new Schema({ tel: [Number], email: [String], address: { type: mongoose.Schema.Type.ObjectId, ref: 'address' } }) mongoose.model('contactInfo ',contactInfoModelSchema ,'contactInfo ') // customer model var customerModelSchema = new Schema({ firstName: String, lastName: String, company: String, contactInfo: { type: mongoose.Schema.Type.ObjectId, ref: 'contactInfo' } }); mongoose.model('customer', customerModelSchema, 'customer') // add new address then contact info then the customer info // it is better to create model for each part.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda