MongoDB 文档更新
-
MongoDB 文档更新
- 本小节将介绍如何更新已经存在的数据文档,可以使用update()和save()来达到作用。
其功能如同SQL中的update,以下将以SQL语法对照转换做为范例。
Update()用法
- 针对已经存在的数据做更新,语法如下:
db.COLLECTION_NAME.update ( <条件> <更新对象与值> { <upsert> <multi> } )
说明:
- COLLECTION_NAME为数据集名称
- 条件如同SQL中WHERE的条件式
- 更新对象如同SQL中的SET设定值
- Upsert表示如数据不存在是否插入此笔资料,可以选择是否使用,默认为False不插入
- Multi表示是否更新条件下所有数据,可以选择是否使用,默认为False只更新条件下第一笔数据
SQL语法对照转换范例:
- 假设SQL原始user数据表如下:
欲更新ID 001的用户名为Kevin
- SQL用法(以SQL server为例):
UPDATE user SET name= 'Kevin' WHERE id= '001';
- MongoDB用法:
db.user.update ( {‘_id’: ‘001’}, {‘$set’: {‘name’: ‘Kevin’} } )
※ MongoDB中主键值应使用 “_id”
※ 如欲更新多笔数据则使用multi为true、数据若不存在欲插入新数据则使用upsert为true,语法如下:db.user.update ( {‘_id’: ‘001’}, {‘$set’: {‘name’: ‘Kevin’} }, {upsert:true}, {multi:true} )
Save()用法
- 透过新传入的数据将原有数据取代,语法如下:
db.COLLECTION_NAME.save (<document>)
SQL语法对照转换范例:
SQL范例要求同上
- MongoDB用法:
db.user.save ({ ‘_id’: ‘001’, ‘name’: ‘Kevin’, ‘sex’: ‘M’, ‘phone’: ‘18699747733’ })
※ 文档更新须注意条件的指令,否则将会更新所有文档资料,详细的条件操作方式可以参考「MongoDB条件操作」的文章。
- 本小节将介绍如何更新已经存在的数据文档,可以使用update()和save()来达到作用。
-
mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别:
一、使用save函数里,如果原来的对象不存在,那他们都可以向collection里插入数据,如果已经存在,save会调用update更新里面的记录,而insert则会忽略操作
二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。
-