我有一个用Mongoose创建的User schema
,其中包含一个customer
数组,并且在该customer
数组中还有另一个fleet
数组。我已经弄清楚了如何推送到customer
中的User schema
数组,但是我不知道如何遍历客户,通过id或name找到customer
,然后将数据推送到fleet
数组中。
这是我的User schema
:
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
username: {
type: String,
default: ''
},
password: {
type: String,
default: '',
},
registerDate: {
type: Date,
default: Date.now()
},
customer: [{
name: {
type: String,
default: '',
},
email: {
type: String,
default: 'No email addresses found',
},
fleet: [{
unitType: {
type: String,
default: 'No type selected',
},
unitNumber: {
type: String,
default: 'No unit number provided',
},
vinNumber: {
type: String,
default: 'No vin number provided'
},
}]
}]
});
module.exports = mongoose.model('User', UserSchema);
我能够弄清楚如何将新客户推入customer
数组中没问题。我的问题是我不知道如何遍历customer
数组,一旦找到所需的customer
,就将数据推送到fleet
数组中。我真的对如何在Google搜索中写词感到困惑!希望它已经足够详细了,如果您需要查看其他代码,请告诉我。
答案 0 :(得分:0)
您需要使用位置'$'操作。阅读here
UserSchema.update(
{'customer.email':'xyz@email.com'},
{
$push:{
'customer.$.fleet':<fleet object>
}
},function(err,result){
})
---或---
UserSchema.update(
{'customer.email':'xyz@email.com'},
{
$set:{
'customer.$.fleet':[fleet array]
}
},function(err,result){
})
希望这会有所帮助。