ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:17.70KB ,
资源ID:7653973      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7653973.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mongodb update用法.docx)为本站会员(kpmy5893)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

mongodb update用法.docx

1、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 为插入,默认是 fal

2、se,不插入。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 );

3、只加进去了第一条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 就是要更新的对象,只能是单条记录。如 果在 co

4、llection 内已经存在一个和 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) $

5、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 );

6、“_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“, “tes

7、t3“ : “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 就是相

8、当于 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“

9、: “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“ : 1

10、5 , $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.u

11、pdate( “_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.test

12、0.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 ,

13、 “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.te

14、st0.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,只是一次可以追加多个值到一个数组字段内

15、。例: 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 , “c

16、ount“ : 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 );

17、 “_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“ :

18、 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“ : “a

19、aa“,“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

20、“,“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“

21、: 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“,“gg

22、g“,“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“,“tes

23、t5“ : “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 : “tes

24、t1“: “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“ : “

25、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

26、“ , “111“, “222“ , “test2“ : “ccc“ , “test4“ : “testv4“, “test5“ : “OK“ 10) $ 操作符$是他自己的意思,代表按条件找出的数组里面某项他自己。呵呵,比较坳口。看一下官方的例子: t.find() “_id“ : ObjectId(“4b97e62bf1d8c7152c9ccb74“), “title“ : “ABC“, “comments“ : “by“ : “joe“, “votes“ : 3 , “by“ : “jane“, “votes“ : 7 t.update( comments.by:joe, $inc:co

27、mments.$.votes:1, false, true ) t.find() “_id“ : ObjectId(“4b97e62bf1d8c7152c9ccb74“), “title“ : “ABC“, “comments“ : “by“ : “joe“, “votes“ : 4 , “by“ : “jane“, “votes“ : 7 需要注意的是,$只会应用找到的第一条数组项,后面的就不管了。还是看例子: t.find(); “_id“ : ObjectId(“4b9e4a1fc583fa1c76198319“), “x“ : 1, 2, 3, 2 t.update(x: 2, $in

28、c: “x.$“: 1, false, true); t.find();还有注意的是$配合 $unset 使用的时候,会留下一个 null 的数组项,不过可以用$pull:x:null删除全部是 null 的数组项。例: t.insert(x: 1,2,3,4,3,2,3,4) t.find() “_id“ : ObjectId(“4bde2ad3755d00000000710e“), “x“ : 1, 2, 3, 4, 3, 2, 3, 4 t.update(x:3, $unset:“x.$“:1) t.find() “_id“ : ObjectId(“4bde2ad3755d00000000710e“), “x“ : 1, 2, null, 4, 3, 2, 3, 4 “_id“ : ObjectId(“4b9e4a1fc583fa1c76198319“), “x“ : 1, 3, 3, 2

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报