0
是新的MEAN堆棧,並且目前在添加(推送)&更新元素到MongoDB中的嵌套數組時遇到了一些麻煩。我有一個模型,如下所示:無法更新或將數據推送到mongodb數組
module.exports = mongoose.model('Check', {
appt_date: String,
details: [
{
appt_time: String,
detail: [ {
name : String,
doctor_name : String
}
]
}
]
});
當通過Mongo Shell使用以下代碼時,我可以根據模型創建文檔。
db.check.insert({"appt_time":"10/10/16"});
db.check.update({"appt_time":"10/10/16"}, {$push: {"details": {"appt_time":"09:30 AM","detail":[]}}},{upsert:true});
db.check.update({"appt_time":"10/10/16","details.appt_time":"09:30 AM"}, {$push: {"details.$.detail": {"name":"roger","doctor":"timmy"}}},{upsert: true});
控制器如下:
var mongoose = require('mongoose');
var check = require('../../models/check');
module.exports.addAppointment = function (req, res){
console.log("time = " + req.body.appt_time);
console.log("date = " + req.body.appt_date);
var checker = new check ({ appt_date: req.body.appt_date });
checker.save();
check.update({"appt_date":req.body.appt_time}, {$push: {"details": {"appt_time":req.body.appt_time,"detail":[]}}},{upsert:true});
check.update({"appt_date":req.body.appt_date,"details.appt_time":"req.body.appt_time}, {$push: {"details.$.detail": {"name":"roger","doctor":"timmy"}}},{upsert: true});
res.json(res.body);
}
上面的代碼只是增加了一個文檔給出一個日期 「25/01/2000」
"_id": ObjectId('57b49d6b9835c0cc26312e21'),
"appt_date": "25/01/2000",
"details": [],
"__v": 0
我在什麼需要的是 - 一個日期條目,多個時間條目以及相應的細節
{
"_id": ObjectId('57b4911cf9e57c0421d1efda'),
"appt_date": "10/10/2016",
"details": [
{
"appt_time": "09:30 AM",
"detail": [
{
"name": "roger",
"doctor": "timmy"
}
]
},
{
"appt_time": "10:30 AM",
"detail": [
{
"name": "david",
"doctor": "james"
}
]
}
]
}
我無法從此陣列執行推送,更新或讀取操作。如果沒有解決這個問題,我無法進一步完成主項目。如果這不是實施模型/數據的正確方法,請告知。所以請幫我解決這個問題。如果問題不明確,我可以實時向您展示這些內容。
感謝所有... :)
謝謝,這是有效的。但我怎麼能實現以下目標: 1)假設我添加appt_date:18/08/2016 2)我公司提供appt_time 09:30 AM,名稱:羅傑,博士大衛 //這會插入一個新的文檔按該模型。 我應該怎麼做添加新條目「」細節」陣列,即另一個appt_time +名字+醫生嗎?上面的代碼創建一個新文檔時提供的數據每次。 我需要的是一個單一的日期輸入,多時間和詳情進入..我怎樣才能做到這一點?? –
@RogerJacob如果你知道值進入第二個元素中的「詳細信息」陣列中,當你創建新的「檢查」的文件,可以將其包含在最初的「檢查」的定義,類似於上面,但如果你是問有關使以後更新現有檢查的文件,這是一個單獨的問題,我認爲。 –