mongo 简单操作

最近接触了下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}}}])  

 

转载于:https://my.oschina.net/fsj42930508/blog/3047321

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值