修改器(update modifier)
通常文档只需要有一部分要更新
更新修改
键名 | 实例 | 说明 | 备注 |
---|---|---|---|
$set | db.c.update({},{“$set”:{“key”:”newString”}}) | 修改值,键没有则创建 | 可以修改键值的类型 |
$inc | db.c.update({},{“$inc”:{“key”:1}}) | 修改增加/减少已有键的值,键不存在就创建一个 | 只能用于 整型,长整型,双精度浮点,其他值会失败 |
$push | db.c.update({},{“$push”:{“key”:{‘name’:’zhe’,’content’:’content post’}}}) | 末尾添加一个数组,键没有则创建新数组 | 数组专用 |
$each | db.c.update({},{“$push”:{“key”:{“$each”:[1,2,3,4]}}}) | 通过一次“$push“操作,添加多个值 | 数组专用,$push的子操作符 |
$slice | db.c.update({},{“$push”:{“key”:{“$each”:[1,2,3,4],”$slice”:-10}}}) | 限制数组包含的元素数 | 数组专用,$slice值的值 必须是负数,截取最后n个元素 |
$sort | db.c.update({},{ ”$push”:{“key”:{“$each”:[{‘age’:1},{‘age’:3},{‘age’:6},{‘age’:11}], ”$slice”:-10, ”$sort”:{“age”:-1} }}}) | 在slice元素前排序 | 1 从大到小 |
$ne | db.c.update({“users”:”$ne”:’zhe’},{ ”$push”:{“users”:”zhe”}}) | 数组有‘zhe‘元素 不添加 | 确保数组元素的唯一性 |
$addToSet | db.c.update({“_id”:ObjectId}, {“$addToSet”:{“users”:”zhe”}}) | 数组有‘zhe‘元素 不添加 | 确保数组元素的唯一性 |
$pop | db.c.update({“_id”:ObjectId}, {“$pop”:{“users”:1}}) | 删除1个元素 | -1 为负数从头部删除1个 |
$pull | db.c.update({“_id”:ObjectId}, {“$pull”:{“users”:”name”}}) | 删除匹配元素 | |
$setOnInsert | db.c.update({“_id”:ObjectId}, {“$setOnInsert”:{“createAt”:new Date()}}) | 更新后锁定 createAt 字段 |
基于位置的数组修改器
在不预先查询,很难确定要修改数组的下标
“$“ 用来定位文档以匹配的数组元素
定位福指更新第一个匹配的元素