MongoDB 語法如何更新文件中陣列中的物件?


為此,在 MongoDB 中使用 findOneAndUpdate()。findOneAndUpdate() 方法會根據篩選和排序條件更新單個文件。

讓我們建立一個包含文件的集合 −

> db.demo553.insertOne(
... {
...    id:101,
...    "Name":"John",
...    midExamDetails:
...    [
...       {"SubjectName":"MySQL","Marks":70},
...       {"SubjectName":"MongoDB","Marks":35}
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8e3da19e5f92834d7f05ed")
}

使用 find() 方法顯示集合中的所有文件 −

> db.demo553.find();

這將產生以下輸出 −

{ "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"), "id" : 101, "Name" : "John", "midExamDetails" : [
   { "SubjectName" : "MySQL", "Marks" : 70 },
   { "SubjectName" : "MongoDB", "Marks" : 35 } 
] }

以下是對 MongoDB 文件中陣列中物件進行更新的語法的查詢 −

> db.demo553.findOneAndUpdate(
...    { id:101,
...       "midExamDetails.SubjectName":"MongoDB"
...    },
...    { $set:{
...       'midExamDetails.$.Marks': 97
...    }
... }
... );
{
   "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
   "id" : 101,
   "Name" : "John",
   "midExamDetails" : [
      {
         "SubjectName" : "MySQL",
         "Marks" : 70
      },
      {
         "SubjectName" : "MongoDB",
         "Marks" : 35
      }
   ]
}

使用 find() 方法顯示集合中的所有文件 −

> db.demo553.find().pretty();

這將產生以下輸出 −

{
   "_id" : ObjectId("5e8e3da19e5f92834d7f05ed"),
   "id" : 101,
   "Name" : "John",
   "midExamDetails" : [
      {
         "SubjectName" : "MySQL",
         "Marks" : 70
      },
      {
         "SubjectName" : "MongoDB",
         "Marks" : 97
      }
   ]
}

更新於:14-5-2020

3K+ 瀏覽

開啟你的 職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.