AdSense

網頁

2019/8/11

MongoDB 修改單一筆document資料的屬性範例

本篇介紹在MongoDB修改Collection中單一筆document資料的語法範例。

在MongoDB建立資料請參考MongoDB 使用mongo shell新增多筆資料

members collection建立一些資料如下:

{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b3"), "name" : "王大明", "age" : 26 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b4"), "name" : "黃小玉", "age" : 19 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }
{ "_id" : ObjectId("5d4ee49aa2f6bbafe52339b9"), "name" : "陳大樹", "age" : 29, "level" : 19 }
{ "_id" : ObjectId("5d4ee49aa2f6bbafe52339ba"), "name" : "林大為", "age" : 32, "level" : 22 }
{ "_id" : ObjectId("5d4ee49aa2f6bbafe52339bb"), "name" : "蔡小芬", "age" : 16, "level" : 25 }

MongoDB修改document資料時,須搭配Update Operators一起使用,例如$set

使用db.collection.updateOne()修改單一筆document資料。collection為被修改document的Collection名稱,本範例為members


db.collection.updateOne()的第一個參數為<filter>,第二個參數為<update>
<filter>為查找修改對象的條件,用法同查詢語法
<update>為要套用的修改,搭配update operators使用。


例如把age = 29的document的level修改為21。

> db.members.updateOne(
    { age : { $eq: 29 } },
    { $set: { level: 21} }
)
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

db.collection.find()查看結果,該筆document的level確實由原本的19被修改為21。

> db.members.find( { age : { $eq: 29 } } )
{ "_id" : ObjectId("5d4ee49aa2f6bbafe52339b9"), "name" : "陳大樹", "age" : 29, "level" : 21 }

如果<filter>的查找結果是多筆,則只有第一筆的資料會被修改。

例如把age < 30的documents的level修改為10。

> db.members.updateOne( { age : { $lt: 30 } }, { $set: { level: 10 } } )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

查看結果如下,只有第一筆document(age: 26)的level被修改為10,而此筆document原本並沒有level屬性。

> db.members.find( { age: { $lt: 30 } } )
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b3"), "name" : "王大明", "age" : 26, "level" : 10 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b4"), "name" : "黃小玉", "age" : 19 }
{ "_id" : ObjectId("5d4e5fb28ef1d4239e23e5b5"), "name" : "李小芳", "age" : 23 }
{ "_id" : ObjectId("5d4ee49aa2f6bbafe52339b9"), "name" : "陳大樹", "age" : 29, "level" : 21 }
{ "_id" : ObjectId("5d4ee49aa2f6bbafe52339bb"), "name" : "蔡小芬", "age" : 16, "level" : 25 }

以上即為在MongoDB修改一筆資料屬性值的範例。


參考:

沒有留言:

AdSense