[英]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.