参考

1,试了试 mongodb 的 insert()、save() ,区别主要是:若存在主键,insert() 不做操作,而save() 则更改原来的内容为新内容。

存在数据: { _id : 1, “ name ” : “ n1 ” }

insert({ _id : 1, “ name ” : “ n2 ” }) 会提示错误

save({ _id : 1, “ name ” : “ n2 ” }) 会把 n1 改为 n2 。

2,创建与使用数据库,use命令,当数据库不存在则创建数据库,新建数据库时show dbs看不见,要显示的数据库,需要把它插入至少一个文件。

3,删除数据库,想要删除名为demo的数据库:

use demo   
db.dropDatabase()  

4,更新多条数据:MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置’multi’ 为true

db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true}) 

5,mongod --rest 会有web控制台

6,$all匹配所有,类似$in不同的是$in只需匹配一个而$all则需匹配所有

7,$exists判断存在

如查询所有存在age字段的纪录:db.user.find({age:{$exists:true}}) 

8,$mod取模运算

如查询age取模10等于1的数据:    db.student.find({age:{$mod:[10,1]}}) 

9,$nin与$in相反

如查询x的值不在2、4、6范围内的数据:db.things.find({x:{$nin:[2,4,6]}}) 

10,$size匹配数组元素个数

11,sort排序

如按照age升序排列: db.users.find().sort({age:1}) 

12,游标:

1)与大多数数据库产品一样,MongoDb也是用游标来循环处理每一条结果数据  

for(var c=db.t1.find();c.hasNext();){printjson(c.next())}

2)forEach方式处理游标

db.t3.find().forEach(function(u){printjson(u);})

13,存储过程:存储在db.system.js表中,执行使用db.eval(‘存储过程名称’)

db.system.js.save({_id:"get_count",value:function(){return db.c1.count();}})
db.eval('get_count()') 

14, 数据更新操作:

1)$inc

用法:{$inc:{field:value}},对一个数字字段的某个field增加value
更新前:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 30 }
操作:db.t3.update({name:"liangzhangping"},{$inc:{age:5}})
更新后:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 35 }

2)$set

用法:{$set:{field:value}},类似于SQL语法中“set field=value”
更新前:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 30 }
操作:db.t3.update({name:"liangzhangping"},{$set:{age:28}})
更新后:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 28 }    

3)$unset

用法:{$unset:{field:1}},删除字段,类似于SQL语法中删除列
更新前:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping", "age" : 30 }
操作:db.t3.update({name:"liangzhangping"},{$unset:{age:1}})
更新后:{ "_id" : ObjectId("4fe096e88a6e072b231ca5c9"), "name" : "liangzhangping" }  

4)$push

用法:{$push:{field:value}},把value追加到field里。field一定是数组类型,如果field不存在,会新增一个
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "userid" : 3, "name" : [ "liangzhangping", "lzp" ] }
操作:db.t3.update({"userid":3},{$push:{name:"xiaoping"}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping" ], "userid" : 3 }

5)$pushAll

用法:{$push:{field:value_array}},用法同$push一样,只是$pushAll一次可以追加多个值到一个数组字段内
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping" ], "userid" : 3 }
操作:db.t3.update({"userid":3},{$pushAll:{name:["N1","N2"]}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping", "N1", "N2" ], "userid" : 3 }

6)$addToSet

用法:{$addToSet:{field:value}},加一个值到数组内,而且只有当这个值不在数组内才增加
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping", "N1", "N2" ], "userid" : 3 }
操作:db.t3.update({"userid":3},{$addToSet:{name:"N1"}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping", "N1", "N2" ], "userid" : 3 }

7)$pop

用法:{$pop:{field:[1,-1]}},删除数组内的一个值,-1:删除第一个,1:删除最后一个
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "liangzhangping", "lzp", "xiaoping", "N1", "N2" ], "userid" : 3 }
操作:db.t3.update({"userid":3},{$pop:{name:-1}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "lzp", "xiaoping", "N1", "N2" ], "userid" : 3 }                
操作:db.t3.update({"userid":3},{$pop:{name:1}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "lzp", "xiaoping", "N1" ], "userid" : 3 }

8)$pull

用法:{$pull:{field:value}},从数组filed内删除一个等于value的值
更新前:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "lzp", "xiaoping", "N1" ], "userid" : 3 }
操作:db.t3.update({"userid":3},{$pull:{name:"N1"}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "lzp", "xiaoping" ], "userid" : 3 }     

9)$pullAll

用法:{$pullAll:{field:value_array}},用法同$pull一样,可以一次删除数组内的多个值
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ "lzp", "xiaoping" ], "userid" : 3 } 
操作:db.t3.update({"userid":3},{$pullAll:{name:["lzp", "xiaoping"]}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ ], "userid" : 3 }      

10)$rename

用法:{$rename:{old_field_name:new_field_name}},完成字段的重命名
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "name" : [ ], "userid" : 3 }   
操作:db.t3.update({"userid":3},{$rename:{name:"alias"}})
更新后:{ "_id" : ObjectId("4fe098f08a6e072b231ca5ca"), "alias" : [ ], "userid" : 3 }  


blog comments powered by Disqus

Published

2016-02-24

Categories


Tags