3.4.3 数据更新操作
MongoDB数据存的是副本数据, 最终的数据还要保存在传统的数据库里,所以如果关系型数据库里数据变了,最好的方法是删除里面的MongoDB数据重新插入。
在MongoDB里面对于数据的更新操作提供了两类函数:save()、update()
3.4.3.1 函数的基本使用
修改数据最直接的使用函数是update()函数,但是update()函数语法要求很麻烦。
- 语法:db.集合.update(更新条件, 新的对象数据, upsert, multi)
新的对象数据:里面可以有一些操作符。
upsert:更新的数据不存在,则增加一条新的内容(true为增加,false为不增加)(upsert 更新插入)
multi:表示是否只满足条件的第一行记录(设置为false,只更新第一条,为true全更新)(multi多)
范例:更新存在的数据——更新年龄是19岁的人的成绩为100分,只更新其中一条。
db.students.update({"age" : 19}, {"$set" : {"score" : 100}}, false, false)
# 更新条件:{"age" : 19}
# 新的对象数据:里面包含的操作符{"$set" : {"score" : 100}}
# "$set"为修改器,这里只用来修改数据,其实集合结构也能修改,因为MongoDB是无模式的
# 第一个为false:表示更新的数据不存在的话不增加
# 第二个为false:表示只更新一条
表示只更新了一条。
范例:更新年龄是19岁的人的成绩为100分,只更新其中多条。
db.students.update({"age" : 19}, {"$set" : {"score" : 100}}, false, true)
# 第二个为true表示更新多条
表示匹配了12条,更新了11条,有一条前面已经更新了。
范例:更新不存在的数据
db.students.update({"age" : 30}, {"$set" : {"name" : "不存在"}}, true, false)
# 第一个为true表示为数据不存在的话增加
"nMatched" : 0表示匹配数为0 "nUpserted" : 1表示更新数为1 "nModified" : 0表示修改数为0