i've seen many answers to this question here, but i still don't get it (maybe because they use more "complex" examples)... So what im trying to do is a schema for a "Customer", and it will have two fields that will have nested "subfields", and others that may repeat. here is what i mean:
let customerModel = new Schema({
firstName: String,
lastName: String,
company: String,
contactInfo: {
tel: [Number],
email: [String],
address: {
city: String,
street: String,
houseNumber: String
}
}
});
tel and email might be an array. and address will not be repeated, but have some sub fields as you can see.
How can i make this work?
const mongoose = require('mongoose')
// Make connection
// https://mongoosejs.com/docs/connections.html#error-handling
mongoose.connect('mongodb://localhost/test')
// Define schema
// https://mongoosejs.com/docs/models.html#compiling
const CustomerModel = mongoose.model('CustomerModel', {
firstName: String,
lastName: String,
company: String,
connectInfo: {
tel: [ Number ],
email: [ String ],
address: {
city: String,
street: String,
houseNumber: String,
},
},
})
// 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: [
'[email protected]',
'[email protected]',
],
address: {
city: 'Radhanpur',
street: 'Vithalnagar',
houseNumber: '101',
},
},
})
// 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.update({ firstName: 'Ashish' }, {
$set: {
'connectInfo.tel.0': 8154099999,
},
})