如何在MongoDB中的 json 列表裡更新鍵的值?


我們首先使用文件建立一個集合

> db.updateListOfKeyValuesDemo.insertOne( { "StudentDetails":[ { "StudentName":"John", "StudentAge":23, "StudentCountryName":"US" }, { "StudentName":"Carol", "StudentAge":24, "StudentCountryName":"UK" }, { "StudentName":"Bob", "StudentAge":22, "StudentCountryName":"AUS" } ] } );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9b5b759882024390176545")
}

下面是使用 `find()` 方法從集合中顯示所有文件的查詢

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

這將生成以下輸出

{
   "_id" : ObjectId("5c9b5b759882024390176545"),
   "StudentDetails" : [
      {
         "StudentName" : "John",
         "StudentAge" : 23,
         "StudentCountryName" : "US"
      },
      {
         "StudentName" : "Carol",
         "StudentAge" : 24,
         "StudentCountryName" : "UK"
      },
      {
         "StudentName" : "Bob",
         "StudentAge" : 22,
         "StudentCountryName" : "AUS"
      }
   ]
}

下面是使用 MongoDB 中 json 列表更新鍵值的查詢

> var documentFromCollection = db.updateListOfKeyValuesDemo.findOne({
...    "_id": ObjectId("5c9b5b759882024390176545")
... });
>
> documentFromCollection.StudentDetails.forEach(function(updateStudent) {
...    updateStudent.StudentName = "Ramit";
... });
> db.updateListOfKeyValuesDemo.update(
...    { "_id": documentFromCollection ._id },
...    { "$set": { "StudentDetails": documentFromCollection.StudentDetails } }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

讓我們檢查一下鍵值列表是否已更新

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

這將生成以下輸出

{
   "_id" : ObjectId("5c9b5b759882024390176545"),
   "StudentDetails" : [
      {
         "StudentName" : "Ramit",
         "StudentAge" : 23,
         "StudentCountryName" : "US"
      },
      {
         "StudentName" : "Ramit",
         "StudentAge" : 24,
         "StudentCountryName" : "UK"
      },
      {
         "StudentName" : "Ramit",
         "StudentAge" : 22,
         "StudentCountryName" : "AUS"
      }
   ]
}

更新於: 2019 年 7 月 30 日

718 次瀏覽

開啟你的 事業

完成課程後獲得認證

開始
廣告
© . All rights reserved.