我試圖將新數據傳遞給對象而不使用nodejs替換舊數據。我的MongoDB數據庫(添加新數據之前)結構如下試圖將新數據傳遞給對象而不用mongoDB替換nodejs中的舊數據使用明文
{
"_id" : ObjectId("58fd05f7fb69f42d54fccd12"),
"Transaction" : {
"QRIDNumber6666" : {
"retailer" : "watson",
"discount" : "10%",
"tax" : "5%",
"Transaction Detail" : [
{
"quantity" : "1",
"pname" : "coca",
"price" : "3"
},
{
"quantity" : "3",
"pname" : "pepsi",
"price" : "5"
}
]
}
}
}
我想要實現的是添加另一QRIDNumber下交易,例如:QRIDNumber 7777,相比QRIDNumber6666
時有不同的值,但相同的結構我現在的嘗試是通過使用該的NodeJS下面的代碼
app.put('/contactlist/', function (req, res) {
var id = "58fd05f7fb69f42d54fccd12";
db.CollectionName.findAndModify({
query: {_id: mongojs.ObjectId(id)},
update: {$set: {Transaction: req.body}},
new: true});
});
注:req.body是細節和QRIDNumber7777的值是從我的控制器發送。
我的代碼的最終結果是它僅替換了「事務」(QRIDNumber6666)下的所有以前的內容,並且僅用新內容(QRIDNumber7777)替換了它。
我希望兩個數據都保留。在「交易」下添加新內容而不刪除舊的內容
如果新的QRID保證是新的,可以在查詢中使用點符號,這樣您就不會替換整個對象? 'update:{$ set:{[''Transaction。$ {req.body.id} \']:req.body}},' – chris
我想到了它,但問題是QRIDNumber(id)會大多數情況下不會被稱爲QRIDNumber的值將是動態和增量的,而不僅僅是QRIDNumber 6666和QRIDNumber 7777.感謝您的幫助! –