Mongodb-修改器1

我们通常需要对文档进行更新,那么会使用到修改器,用来指定复杂的更新操作,如增、删、改,还可以操作数组或者内嵌文档。

下面介绍几个常用的修改器

1.$inc

可以对文档中值为数字型的键进行增减的操作,使用修改器时”_id”的值不能改变。

比如想要对某个网站,只要有人访问就增加一次点击量,可以使用此修改器

{
   "_id" : ObjectId("4003b6178af21ff428dafbe5"),
   "url":"www.bi.efeihu.com",
   "pageviews":50
 }

增加pageviews的值,如下:

>db.bitest.update({"url":"www.bi.efeihu.com"},{"$inc":{"pageviews":1}})

当重新查询时会发现pageviews增加了1

{
   "_id" : ObjectId("4003b6178af21ff428dafbe5"),
   "url":"www.bi.efeihu.com",
   "pageviews":51
 }

2.$set

指定一个字段的值,如果此字段不存在则创建。

>db.bitest.findOne()
{
   "_id":ObjectId("5067b6178ay71ff428ddaes85") ,
    "name":"Daisy",
    "Customernumber","F7510478", 
    "age":"30",
    "sex":"male"
}

如果要添加电话号码,可以使用$set

>db.bitest.update({"_id":ObjectId("5067b6178ay71ff428ddaes85")},{"$set":{"phonenumber":"13699487658"}})

再查询文档就会发现已经添加电话

>db.bitest.findOne()
{
   "_id":ObjectId("5067b6178ay71ff428ddaes85") ,
    "name":"Daisy",
    "Customernumber","F7510478", 
    "age":"30",
    "sex":"male",
    "phonenumber":'13699487658'
}

$set可以修改键的类型,将phonenumber键变成一个数组

>db.bitest.update({"_id":ObjectId("5067b6178ay71ff428ddaes85")},{"$set":{"phonenumber":["13699487658","18382337373"]}})

查询结果:

>db.bitest.findOne()
{
   "_id":ObjectId("5067b6178ay71ff428ddaes85") ,
    "name":"Daisy",
    "Customernumber","F7510478", 
    "age":"30",
    "sex":"male",
    "phonenumber":[
       "13699487658",
       "18382337373"
    ]
}

$set还可以更新内嵌的文档

>db.freight.findOne(){
    "_id":ObjectId("5003be465af21ff428dafbe7"),
    "productno":"20302568310",
    "weight":"20",
    "size":{
        "height":15,
        "width":10,
        "length":15
    }
}

更新height值

>db.freight.update({"product":"20302568310"},{"$set":{"size.height":11}})

查看结果

>db.freight.findOne(){
    "_id":ObjectId("5003be465af21ff428dafbe7"),
    "productno":"20302568310",
    "weight":"20",
    "size":{
        "height":11,
        "width":10,
        "length":15
    }
}

更多文章可參考:http://forum.foxera.com/mongodb/category/27/server-shell
posted @ 2018-10-12 15:03  tingcheng  阅读(183)  评论(0编辑  收藏  举报