![](/img/trans.png)
[英]Please how can i update a nested mongodb embedded document, I have a document structure like this
[英]How do I update an embedded document with a nested hierarchy?
我有一个需要更新的嵌入式文档。 除了一种情况,我设法使所有工作正常:我无法获取具有嵌套层次结构的嵌入式文档来进行更新。 这是我尝试做的一个例子:
console.log('Phone type: ' + req.body.phone.type); // prints, e.g., 'Phone type: Work'
console.log('Phone #: ' + req.body.phone.number); // prints, e.g., 'Phone #: 555-555-5555'
var updateData = {
"user.$.contact_info": {
email: req.body.email,
phone: {
type: req.body.phone.type,
number: req.body.phone.number
}
}
};
Group.update(
{ "user._id" : req.params.user_id },
{ $push : updateData },
function(err,data) {
console.log('Success!'); // I see the "Success!" message every time I save a record
}
);
架构:
var contactInfoSchema = mongoose.Schema({
created : {
type: Date,
default: Date.now
},
email : String
phone: {
type: String,
number: String
}
});
var userSchema = mongoose.Schema({
created : {
type: Date,
default: Date.now
},
contact_info : [contactInfoSchema]
});
var GroupSchema = mongoose.Schema({
created : {
type: Date,
default: Date.now
},
users : [userSchema]
});
我发现我可以创建记录,但是只存储电子邮件地址,而不存储电话信息。 在检查控制台时,我可以看到正在发送电话类型和电话号码信息,但是它并没有在数据库中更新。 我究竟做错了什么?
使用“ type”关键字的“ contactInfoSchema”中的问题。 你需要这个:
var contactInfoSchema = mongoose.Schema({
created : {
type: Date,
default: Date.now
},
email : String
phone: {
"type": { "type": String },
number: String
}
});
因此,由于您试图将“子文档”字段称为“类型”,所以基本上猫鼬感到困惑,它认为这是“电话”字段的数据“类型”。 宣布以上一切工作正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.