mongodb 数据库update 操作

来源:互联网 发布:java volatile 源码 编辑:程序博客网 时间:2024/05/17 09:14

先附带一些基本的操作1,命令行进入mongodb,并切换数据库

[root@log-test ~]# mongoMongoDB shell version: 2.0.1connecting to: test> use logs  //数据库switched to db logs>


 

2,查询出2条数据

> db.logs.find().limit(2){ "A" : "456464", "D" : "2011-11-30 00:02:22", "I" : "192.168.1.1", "M" : "DFSDFSD", "MI" : "DFDSFDSFDSF", "O" : "Login", "P" : "test001", "S" : 1, "T" : "Login", "U" : "ZHANGJM", "_id" : ObjectId("4ed6e9cc20c8485a5d55a12c") }{ "_id" : ObjectId("4ed76179e4e58a85f892afa3"), "S" : 16, "I" : "192.168.1.89", "U" : "hyib38", "A" : "", "D" : "2011-12-01 01:52:00", "P" : "com.hy.market.registration.web.MARKKETERAction method:registrer (english)", "T" : "register", "O" : "register", "M" : "<hyib38>: write db success  demo [,User name: <hyib38>, First name: <sdsd>, Middle Name: <null>, Surname name: <sdsdsdsd>, Area of residence: <Antigua and Barbuda>, Account type: <null>, Phone: <1268 -  - 22222222222>, Phone2: < -  - >, Email: <xf.li@cn.henyep.com>, affiliate ID: <AE1-W01>, verification code: <1s47>, language: <english>, campaignID: <>,PAP affiliate ID: <>,REFERE: <null>,accepted Customer Agreement: <yes>, accepted Customer Agreement: <Henyep Investment Customer Agreement MiFID Compliant - English.pdf|2011-01-18 10:40:33>, type:<webclient>]", "MI" : "Reg001\r" }>


 

现在进入正题,更新的语法如下

db.collection.update( criteria, objNew, upsert, multi )

criteria : update的查询条件,类似sql update查询内where后面的
objNew   : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert   : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

现在我们将S为1的 U为ZHANGJM 改为 zhangjianming。执行

> db.logs.update({S:1},{$set:{U:"zhangjianming"}})

再次查询,结果如下,已经将U字段的值update

> db.logs.find({S:,1}).limit(1){ "A" : "456464", "D" : "2011-11-30 00:02:22", "I" : "192.168.1.1", "M" : "DFSDFSD", "MI" : "DFDSFDSFDSF", "O" : "Login", "P" : "test001", "S" : 1, "T" : "Login", "U" : "zhangjianming", "_id" : ObjectId("4ed6e9cc20c8485a5d55a12c") }