最近接触了下mongo数据库,一下列出一些简单的操作命令。collection为test,相当于mysql的表
1.插入数据 (类似sql的insert)
db.test.insert({"name":"张三","sex":"男","age":18})
2.删除数据 (类似sql的delete)
db.test.deleteOne({"name":"张三"}) --只删除一条
db.test.deleteMany({"name":"张三"}) --删除所有符合条件的数据
3.新增字段
db.test.update({},{$set:{"country":"china"}},{multi:true}) --所有数据新增country字段并赋值china
db.test.upodate({"name":{$exists:true}},{"country":"china"},{multi:true}) --所有存在name字段的数据新增字段
4.修改字段
db.test.update({"age":{"$exists":true}},{"$rename":{"name":"name2"}},{multi:true}) --将所有存age的字段的数据的name字段改为name2 --multi是否修改多个
5.修改数据
db.test.update({},{$set:{"name":"李四"}}) --修改一条数据name改为李四
db.test.update({},{$set:{"name":"李四"}},{multi:true}) --修改所有数据数据name都改为李四
db.test.update({"name":"张三"},{$set:{"name":"456李四}},{multi:true}) --将所有张三改为李四
6.查询全部 (类似mysql的select * )
db.test.find({}) --或者
db.getCollection('test').find({})
db.test.find({}).limit(5) --只展示5条
db.test.find({}).skip(5) --过滤前5条 ,可做分页
7.指定查询条件(类似sql的 where )
db.test.find({"name":"张三"}) 或者
db.test.find({name:"张三"})
db.test.find({"name":{$in:["张三","李四"]}}) --in条件
db.test.find({"name":{$nin:["张三","李四"]}}) --not in条件
db.test.find({"age":{$gt:15,$lt:20}}) --age在15到20之间--gt大于 gte大于等于 lt小于 lte小于等于
8.查询存在某字段的数据 (有点类似sql里的不为null,不完全相同)
db.test.find({"name":{"$exists":true}})
9.多条件查询 (类似sql的and或者or)
db.test.find({"name":"张三","sex":"男"}) --and关系
db.test.find({"$or":[{"name":"张三"},{"sex":"男"}]}) --or关系
10.去重查询 (类似sql的select distinct(name))
db.test.distinct("sex") --查询sex字段的去重值
db.test.distinct("sex",{"name":"张三"}) --查询name为张三的数据字段的去重值,后面可跟查询条件
11.聚合查询
db.test.aggregate([{$group:{_id:$name,count:{$sum:1}}}]) --根据name字段聚合,统计个数,类似sql的count
db.test.aggregate([{$group:{_id:$name,sum:{$sum:"$age"}}}]) --根据name字段聚合,求age之和
db.test.aggregate([{$group:{_id:$name,aaa:{$min:"$age"}}}]) --根据name字段聚合,age最小值--max最大值
db.test.aggregate([{$group:{_id:$name,sss:{$push:$age}}}]) --根据name字段聚合,并且向聚合结果插入一个数组,值为age
12.管道操作
--查询结果只展示name和age字段 --&project
db.test.aggregate({$project:{name : 1 ,age : 1 }})
--统计所有叫张三的人的性别的个数,类似sql的先过滤然后再查询功能 --match --group
db.test.aggregate([{$match:{name:"张三"}},{$group:{_id:"$sex",count:{$sum:1}}}])