我是 mongodb 的新手,我正在學習一些 Udemy 課程,我想知道如何更新檔案現有欄位而不覆寫它。
我有以下這些檔案的集合:
在此處輸入圖片說明
我要添加新warehouses的"item":"drafts"的內stock場。
我正在嘗試的是:
在此處輸入圖片說明
并給出輸出似乎有效,但是當我再次執行時db.matrices.find(),我得到的輸出與第一張影像中的輸出完全相同。
我怎樣才能更新它?我也嘗試過該update方法,但沒有做我想做的事情。
謝謝!
PD:我正在使用 linux mint、mongo v5.0.3 和 mongosh v1.1.1
uj5u.com熱心網友回復:
您正在使用aggregate管道,這不會更新資料庫中的檔案,它只是檢索結果。從 Mongo 4.2 版開始,您現在可以使用聚合管道(有一些限制)來更新檔案,如下所示:
db.collection.updateOne({
item: "drafts"
},
[
{
$set: {
stock: {
$concatArrays: [
"$stock",
[
{
"warehouse": "A",
qty: 20
}
]
]
}
}
}
])
蒙戈游樂場
我只想說這個特定的更新非常簡單,不需要使用聚合管道。在更新欄位中簡單使用$push運算子就足以進行“正常”更新:
db.collection.updateOne({
item: "drafts"
},
{
$push: {
stock: {
"warehouse": "A",
qty: 20
}
}
})
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/344960.html
