MongoDB使用update()和save()方法来更新集合中的文档。
update()更新文档的基本语法如下:
<query>参数设置查询条件,<update>为更新操作符,比如$inc、$set、$unset、$push、$pull等。
upsert为布尔型可选项,表示如果不存在update的记录,是否插入这个新的文档。true为插入;默认为false,不插入。
multi也是布尔型可选项,默认是false,只更新找到的第一条记录。如果为true,则把按条件查询出来的记录全部更新。
writeConcern表示出错级别。
collation指定语言。
例如,插入一条数据后,使用update进行更改,代码如下:
将item为card的数量qty更正为35,代码如下:
collation允许MongoDB的用户根据不同的语言定制排序规则,在MongoDB中字符串默认当作一个普通的二进制字符串来对比。而对于中文名称,通常有按拼音顺序排序的需求,这时就可以通过collation来实现。创建集合时,指定collation为zh,按name字段排序时,则会按照collation指定的中文规则来排序,代码如下:
MongoDB另一个更新命令是save(),语法格式如下:
obj代表需要更新的对象,如果集合内部已经存在一个与obj相同的“_id”的记录,Mongodb会把obj对象替换集合内已存在的记录;如果不存在,则会插入obj对象。
如下代码会先保存一个_id为100的记录,然后再执行save,并对当前已经存在的数据进行修改:
如果使用insert插入记录,若新增数据的主键已经存在,则会抛出DuplicateKeyException 异常提示主键重复,不保存当前数据。