方法save(), 这个方法的效率比insert() 和 update()的效率要低,但是它在有些情况下更容易使用。如:
修改从MongoDB检索的对象时, 可使用方法save()而不是update(),这样无需指定query和update对象。
方法save()的语法如下,其中参数doc是一个要保存到集合中的文档对象:
save()
实操说明:
- 在使用save()方法时, 必须需要先使用查询方法查询出某文档,再进行操作。
- 针对查询出来的文档,可以进行添加内容,应该也可以删除内容。
update()
需要用的到的函数操作:
执行更新操作时可在update对象中指定的运算符
运算符 | 描述 |
---|---|
$inc | 将字段值增加指定的量,格式为“ field:inc_value” |
$rename | 重命名字段,格式为:field:new_name |
$setOnInsert | 在更新操作中新建文档时设置字段的值,格式为:field:value, 注: 这个函数操作必须要在upsert为ture时生效 |
$set | 设置既有文档的字段值,格式为field:new_new |
$unset | 从既有文档中删除指定字段,格式为:field:"" |
$ | 充当占位符,更新与查询条件匹配的第一个元素 |
$andToSet | 在既有的数组中添加元素(如果这些元素没有包含在数组中),格式为:array_field:new_value |
$pop | 删除数组的第一个或最后一个元素。如果pop_value为-1,则删除第一个元素;如果pop_value为1,则删除最后一个元素。格式为:array_field:pop_value |
$pullAll | 从数组中删除多个值。要删除的值是以数组方式指定的。格式为array_field:[value1,value2...] |
$pull | 从数组中删除与查询条件匹配的元素,其中查询条件是一个基本的查询对象,指定了字段名和匹配条件。格式:array_field:[<query>] |
$push | 在数组中添加一个元素。对于简单数组,格式为array_field:new_value;对于对象数组,格式为array_field:{field:value} |
$each | 用于运算符$push和$addToSet 的限定符,用于在数组中添加多个元素。格式为array_field:{$each:[value1,...]},一般会与$addToSet方法配合使用 |
$slice | 用于运算符$push的限定符,用于限制更新后的数组长度。格式为array_field:{$slice:<num>} |
$sort | 用于运算符$push的限定符,用于将数组中的文档重新排序 |
$bit | 对整数值执行按位与和或运算。 格式为format:integer_field:{and:<integer>} 和 integer_field:{or:<integer>} |
说明$slice 函数说明:
{
$push:{
<field>: {
$each: [<value1>,<value2>,....],
$slice: <num>
}
}
}
说明$sort函数在update方法里面的使用:
{
$push:{
array_field:{
$each:[value1,value2,....],
$slice: x,
$sort: 1 // 1表示正序;-1表示倒序
}
}
}
update方法, 有四个参数:
- query
- 具体的操作
- 如果没有对应的记录是否插入开关
- 是否匹配所有符合条件的记录