mongodb 用法.docx_第1页
mongodb 用法.docx_第2页
mongodb 用法.docx_第3页
mongodb 用法.docx_第4页
mongodb 用法.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

mongodb update 用法2011-10-09 17:47ongodb更新有两个命令:1).update()命令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,就把按条件查出来多条记录全部更新。例:db.test0.update( count : $gt : 1 , $set : test2 : OK ); 只更新了第一条记录db.test0.update( count : $gt : 3 , $set : test2 : OK ,false,true ); 全更新了db.test0.update( count : $gt : 4 , $set : test5 : OK ,true,false ); 只加进去了第一条db.test0.update( count : $gt : 5 , $set : test5 : OK ,true,true ); 全加进去了db.test0.update( count : $gt : 15 , $inc : count : 1 ,false,true );全更新了db.test0.update( count : $gt : 10 , $inc : count : 1 ,false,false );只更新了第一条2).save()命令db.collection.save( x )x就是要更新的对象,只能是单条记录。如 果在collection内已经存在一个和x对象相同的_id的记录。mongodb就会把x对象替换collection内已经存在的记录,否则将 会插入x对象,如果x内没有_id,系统会自动生成一个再插入。相当于上面update语句的upsert=true,multi=false的情况。例:db.test0.save(count:40,test1:OK); #_id系统会生成db.test0.save(_id:40,count:40,test1:OK); #如果test0内有_id等于40的,会替换,否则插入。mongodb的更新操作符:1) $inc用法: $inc : field : value 意思对一个数字字段field增加value,例: db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 16, test1 : TESTTEST, test2 : OK, test3 : TESTTEST, test4 : OK, test5 : OK db.test0.update( _id : 15 , $inc : count : 1 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 17, test1 : TESTTEST, test2 : OK, test3 : TESTTEST, test4 : OK, test5 : OK db.test0.update( _id : 15 , $inc : count : 2 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 19, test1 : TESTTEST, test2 : OK, test3 : TESTTEST, test4 : OK, test5 : OK db.test0.update( _id : 15 , $inc : count : -1 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : TESTTEST, test2 : OK, test3 : TESTTEST, test4 : OK, test5 : OK 2) $set用法: $set : field : value 就是相当于sql的set field = value,全部数据类型都支持$set。例: db.test0.update( _id : 15 , $set : test1 : testv1,test2 : testv2,test3 : testv3,test4 : testv4 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : testv1, test2 : testv2, test3 : testv3, test4 : testv4, test5 : OK 3) $unset用法: $unset : field : 1 顾名思义,就是删除字段了。例: db.test0.update( _id : 15 , $unset : test1:1 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test2 : testv2, test3 : testv3, test4 : testv4, test5 : OK db.test0.update( _id : 15 , $unset : test2: 0 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test3 : testv3, test4 : testv4, test5 : OK db.test0.update( _id : 15 , $unset : test3:asdfasf );Fri May 14 16:17:38 JS Error: ReferenceError: asdfasf is not defined (shell):0 db.test0.update( _id : 15 , $unset : test3:test ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test4 : testv4, test5 : OK 没看出field : 1里面的1是干什么用的,反正只要有东西就行。4) $push用法: $push : field : value 把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。例: db.test0.update( _id : 15 , $set : test1 : aaa,bbb ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa, bbb , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $push : test1: ccc ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa, bbb, ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $push : test2: ccc ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa, bbb, ccc , test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $push : test1: ddd,eee ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa, bbb, ccc, ddd, eee , test2 : ccc , test4 : testv4, test5 : OK 5) $pushAll用法: $pushAll : field : value_array 同$push,只是一次可以追加多个值到一个数组字段内。例: db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa, bbb, ccc, ddd, eee , test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $pushAll : test1: fff,ggg ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa, bbb, ccc, ddd, eee , fff, ggg , test2 : ccc , test4 : testv4, test5 : OK 6) $addToSet用法: $addToSet : field : value 增加一个值到数组内,而且只有当这个值不在数组内才增加。例: db.test0.update( _id : 15 , $addToSet : test1: $each : 444,555 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa,bbb,ccc,ddd,eee,fff,ggg,111,222,444,555, test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $addToSet : test1: $each : 444,555 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa,bbb,ccc,ddd,eee,fff,ggg,111,222,444,555, test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $addToSet : test1: 444,555 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa,bbb,ccc,ddd,eee,fff,ggg,111,222,444,555,444,555, test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $addToSet : test1: 444,555 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : aaa,bbb,ccc,ddd,eee,fff,ggg,111,222,444,555,444,555, test2 : ccc , test4 : testv4, test5 : OK 7) $pop删除数组内的一个值用法:删除最后一个值: $pop : field : 1 删除第一个值: $pop : field : -1 注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用,例: db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : bbb,ccc,ddd,eee,fff,ggg,111,222,444, test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $pop : test1: -1 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : ccc,ddd,eee,fff,ggg,111,222,444, test2 : ccc , test4 : testv4, test5 : OK db.test0.update( _id : 15 , $pop : test1: 1 ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : ccc, ddd, eee , fff, ggg, 111, 222 , test2 : ccc , test4 : testv4,test5 : OK 8) $pull用法:$pull : field : value 从数组field内删除一个等于value值。例: db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : ccc, ddd, eee , fff, ggg, 111, 222 , test2 : ccc , test4 : testv4,test5 : OK db.test0.update( _id : 15 , $pull : test1: ggg ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : ccc, ddd, eee , fff, 111, 222 , test2 : ccc , test4 : testv4, test5: OK 9) $pullAll用法: $pullAll : field : value_array 同$pull,可以一次删除数组内的多个值。例: db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : ccc, ddd, eee , fff, 111, 222 , test2 : ccc , test4 : testv4, test5: OK db.test0.update( _id : 15 , $pullAll : test1: ccc , fff ); db.test0.find( _id : 15 ); _id : floatApprox : 15 , count : 18, test1 : ddd, eee , 111, 222 , test2 : ccc , test4 : testv4, test5 : OK 10) $ 操作符$是他自己的意思,代表按条件找出的数组里面某项他自己。呵呵,比较坳口。看一下官方的例子: t.find()_id: Obje

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论