MongoDB更新操作符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/benben_2015/article/details/82761115

$currentDate

$currentDate操作符将字段的值设置为当前日期,可以是Datetimestamp,默认类型是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字段值变为14Q3tag字段的值也同时更新。

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"
      }
    }
)

参考文章

  1. Field Update Operators

猜你喜欢

转载自blog.csdn.net/benben_2015/article/details/82761115