在MongoDB中,您可以使用update()
方法來按條件修改值。以下是基本的語法格式:
db.collection.update(
<query>, // 查詢條件
<update>, // 更新操作
{ <options> } // 可選參數
)
其中:
<query>
:指定要修改的文檔的查詢條件。<update>
:指定更新操作,可以使用一些更新操作符(如$set
、$inc
等)來修改字段的值。<options>
:可以包含一些可選參數,如multi
(是否更新多個匹配的文檔,默認為false
)等。以下是一個例子,演示如何按條件修改值:
假設我們有一個名為students
的集合,其中包含以下文檔:
{ "_id" : ObjectId("60bcf5a9c1b2c1b8cd9d1d4f"), "name" : "John", "age" : 20, "score" : 85 }
{ "_id" : ObjectId("60bcf5a9c1b2c1b8cd9d1d50"), "name" : "Alice", "age" : 22, "score" : 95 }
{ "_id" : ObjectId("60bcf5a9c1b2c1b8cd9d1d51"), "name" : "Bob", "age" : 21, "score" : 75 }
現在,假設我們要將年齡大于等于21歲的學生的分數加10分。可以使用以下代碼:
db.students.update(
{ age: { $gte: 21 } }, // 查詢條件:age大于等于21歲的學生
{ $inc: { score: 10 } }, // 更新操作:將分數加10
{ multi: true } // 更新多個匹配的文檔
)
執行上述代碼后,students
集合的文檔將變為:
{ "_id" : ObjectId("60bcf5a9c1b2c1b8cd9d1d4f"), "name" : "John", "age" : 20, "score" : 85 }
{ "_id" : ObjectId("60bcf5a9c1b2c1b8cd9d1d50"), "name" : "Alice", "age" : 22, "score" : 105 }
{ "_id" : ObjectId("60bcf5a9c1b2c1b8cd9d1d51"), "name" : "Bob", "age" : 21, "score" : 85 }
注意,上述示例中的multi: true
參數表示更新所有匹配的文檔。如果不指定此參數,默認只會更新第一個匹配的文檔。
除了$inc
操作符外,還可以使用其他更新操作符,如$set
(設置字段值)、$unset
(移除字段)、$push
(向數組中添加元素)等。具體的更新操作符請參考MongoDB官方文檔。