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

登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待