$currentDate
$currentDate
操作符将字段的值设置为当前日期,可以是Date
或timestamp
,默认类型是Date
。如果设置的字段不存在,$currentDate
会在文档中添加该字段。格式如:{$currentDate:{字段名:时间类型,...}}
。
时间类型可以是满足下面条件的任意一个:
- 布尔值
true
表示将字段值设置为当前日期作为Date
; {$type:"timestamp"}
或{$type:"date"}
,它明确指定了类型。操作符区分大小写,仅接受小写的"timestamp"
或者小写的"date"
。
例如,将下面products
表中_id
字段为1
的文档中的lastModified
字段更新成当前的日期。
db.products.update(
{_id:1},
{
$currentDate:{
lastModified:true
}
}
)
$inc
将指定字段的值加上指定的值,格式如下:{$inc:{字段1:数量1,...}}
。数量既可以是正数,也可以是负数。如果要增加的字段不存在,那么$inc
会生成一个字段,并且将该值设置为特定的值。但是如果你上传了一个空值,那么就会出现错误。对于单个文档,$inc
是原子操作。
例如,将products
表中_id
字段为1
的文档中的num
字段值增加10
,脚本如下:
db.products.update(
{_id:1},
{
$inc:{
num:10
}
}
)
$min
$min
操作符会更新文档中某个字段值小于特点值的字段,格式如下:{$min:{字段1:值1,...}}
。如果字段不存在,$min
操作符会设置字段为特定的值。
例如,判断products
表中_id
字段为1
的文档中的num
字段值,如果大于10
,那么值会变为10
,如果小于10
,则不会有变化。
db.products.update(
{_id:1},
{
$min:{
num:10
}
}
)
那么如果你要对表中所有文档执行这一操作,只需要运行db.collection.update({},{$min:{field1:"",field2:"",...}})
。
$max
$max
操作符和$min
正好相反,它会更新文档中某个字段值大于特定值的字段。用法和$min
相同。
$set
$set
操作符将字段的值替换为指定的值,它具有以下形式:{$set:{字段1:值1,...}}
。如果字段不存在,$set
将会创建新字段(前提是该字段不能和类型限制相冲突),将指定的值赋上。如果指定多个字段-值对,$set
将更新或创建每个字段。
例如,将products
表中_id
字段为1
的文档中的quantity
字段值变为500
,将字段details
字段中的model
字段值变为14Q3
,tag
字段的值也同时更新。
db.products.update(
{ _id: 1 },
{ $set:
{
quantity: 500,
details: { model: "14Q3", make: "xyz" },
tags: [ "coats", "outerwear", "clothing" ]
}
}
)
$unset
$unset
操作符可以删除表中特定的字段,语法如下:{$unset:{字段1:"",...}}
。如果要删除的字段不存在,那么$unset
不会做任何操作。
例如:使用$unset
操作符来移除products
表中,_id
字段值为1
的文档中的quantity
字段。
db.products.update(
{ _id: 1 },
{ $unset:
{
"quantity":""
}
}
)
那么如果你想删除表中某一字段的所有文档的值,只需要运行db.collection.update({},{$unset:{field1:"",field2:"",...}})
。
$rename
$rename
操作符会更新某一字段的名字,语法如下:{$rename:{字段名1:新的字段名1,...}}
。新的字段名必须和现有的字段名不相同,如果文档中不存在要重命名的字段,那么$rename
将不会做任何操作。其逻辑是在就的字段名上执行$unset
操作,然后使用新的名称执行$set
操作。
例如:使用$rename
重命名products
表中_id
字段值为1
的文档中的username
字段名为userName
。
db.products.update(
{ _id: 1 },
{ $rename:
{
"username":"userName"
}
}
)
同理,如果要更新表中的所有文档,只需修改匹配的条件。
db.products.update(
{},
{ $rename:
{
"username":"userName"
}
}
)
参考文章