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