Nested objects in mongoose schemas Nested objects in mongoose schemas mongodb mongodb

Nested objects in mongoose schemas


const mongoose = require("mongoose");// Make connection// https://mongoosejs.com/docs/connections.html#error-handlingmongoose.connect("mongodb://localhost:27017/test", {  useNewUrlParser: true,  useUnifiedTopology: true,});// Define schema// https://mongoosejs.com/docs/models.html#compilingconst 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-documentsconst 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-savecustomer.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.findOneCustomerModel.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.updateCustomerModel.updateOne(  { firstName: "Ashish" },  {    $set: {      "connectInfo.tel.0": 8154099999,    },  });


// 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.