mongodb

一:操作数据库增删改查
cls清屏

Mongo数据库操作
1.show dbs 查看当前数据库

2.use itying 切换到ityting数据库 如果没有该数据库则不会自动添加数据库

3.db.user.insert({name:"zhangsan",age:20})当切换到itying数据库时候在itying数据库添加user集合并添加一条数据({"username":"张三","age":20})

4.show collections 查看当前数据库中有哪些表

5.db.user.find() 查看表中有哪些数据

6.db.user.drop() 删除指定的某张表

7.db.user.find({"age":22}) 查询age=22的
  db.user.find({age:{$gt:21}}) 查询age>21的数据 相当于select * from user where age >21;
  db.user.find({age:{$gt:21}}) 查询age>21的数据 相当于select * from user where age >=21;
  db.user.find({age:{$lte:21}}) 查询age<21的数据 相当于select * from user where age <21;
  db.user.find({age:{$lte:21}}) 查询age<21的数据 相当于select * from user where age <=21;
  同理:
  db.user.find({age:{$gt:20,$lte:22}})  注意书写格式

8.db.user.find(name:/mongo/)   模糊查询 相当于select * from user where name like '%mongo%' 性能不太好
  db.user.find(name:/^mongo/)  查找以什么开头的 select * from user where name like 'mongo%'
  db.user.find(name:/mongo$/)  查找以什么结尾的

9.查询指定列表显示
  db.user.find({},{name:1,age:1}) 查询指定列表显示(只需要哪些字段) 相当于select name, age from user
db.user.find({age:{$gt:20}},{username:1}) 第一个括号是条件 相当于 select name, age from user where age >20

10.排序
  db.user.find().sort({age:1})  升序
  db.user.find().sort({age:-1}) 降序

11.查询name = "zhangsan" age = 20的人
  db.user,find({name:""zhangsan",age:22}) 相当于 select * from user where name="zhangsan" and age = 20 

12.查询前5条数据
  db.user.find().limit(5) 里面的数字可以随便定义 相当于 selecttop 5 * from user

13.查询10条以后的数据
  db.user,find().skip(10) 不包括第10条数据
  拓展方法:db.user,find().skip(2).limit(2) 多用于分页 limit为pageSize skip为第几页

14.for(var i=0;i<100;i++){
  db.admin.insert({username:"zhangsan"+i,age:i})
}
 和JavaScript语法很像,添加100条数据

15.db.admin.find().count() 查找集合中有多少条数据
   db.user.find({age:25}).count() 相当于 select count(*) from user where age = 25
.
16.or 与 查询
  db.user.find({$or:[{username:"zhangsan"},{username:"leilei"}]})  能进行与查询 相当于 select * from user where age = 22 or age = 25

17.查询第一条数据
 db.user.findOne()

18.修改数据
  db.user.update({username:"zhangsan666"},{$set:{age:21,username:"张三"}}) 第一个括号是条件 (修改数据)
  db.user.update({username:"zhangsan666"},{$set:{sex:"男"}})(新增)
  db.user.update({age:25},{$set:{sex:"女"}},{multi:true}) 加上第三个参数{multi:true} 表示修改多条数据 不加只修改一条数据

19.删除数据
  db.user.remove({username:"李四"},{justOne:true}) 删除一条数据
  db.user.remove({username:"李四"}) 删除多条数据  
  db.user.remove({}) 这段比较危险,大家可以试一试,我当时就试了一下效果特别好 加深记忆


二:索引基础 1表示生序 -1表示降序
  1.具体方法.explain("executionStats")
  db.user.find({username:"leilei50294"}).explain("executionStats")

  2.创建索引
  db.user.ensureIndex({"username":1})
    创建复合索引
  db.user.ensureIndex({username:1,age:1})
    在索引被创建后,基于username和age的查询将会用到该索引,或者是基于username的查询也会用到该索引,但只是基于age的查询将不会用到该复合索引。因此可以说,如果像用到索引,必须在查询太哦见中包含复合索引中的前n个索引列。然而如果查询条件中的健值顺序和复合索引中的传家顺序不一致的话,mongodb智能帮助我们调整顺序

  3.获取当前的索引
  db.user.getIndexes()

  4.删除索引命令
  db.user.dropIndex({"username":1 })

  5.唯一索引
  db.user.ensureIndex({"username":1},{unique:true}) 设置唯一索引是防止重复添加数据

三.mongodb账户权限配置
  1.use admin
    show users 查看当前有哪些用户
    db.dropUser('admin') 删除用户admin
  2.创建用户
    db.createUser({user:'admin',pwd:'123456',roles:[{role:'root',db:'admin'}]})
  3.修改密码
    db.updateUser("admin",{pwd:"111111"})
  4.密码认证
    db.auth("admin","passwordsudo service mongod restart")

四.多表关联查询
   $project
    db.order.aggregate([{$project:{order_id:1}}]) 管道
   $match
    db.order.aggregate([{$project:{order_id:1,all_price:1}},{$match:{all_price:{$gte:90}}}])
   $group 
    db.order_item.aggregate([{$group:{_id:"$order_id",total:{$sum:"$num"}}}])
    db.order_item.aggregate([{$group:{_id:"$order_id",total:{$sum:"$price"}}}])

   $sort 
    db.order.aggregate([{$project:{order_id:1,all_price:1}},{$match:{all_price:{$gte:90}}},{$sort:{all_price:-1}}]) 降序
    db.order.aggregate([{$project:{order_id:1,all_price:1}},{$match:{all_price:{$gte:90}}},{$sort:{all_price:-1}}]) 升序

   $limit 
    db.order.aggregate([{$project:{order_id:1,all_price:1}},{$match:{all_price:{$gte:90}}},{$sort:{all_price:1}},{$limit:1}]) 限制

   $skip 
    db.order.aggregate([{$project:{order_id:1,all_price:1}},{$match:{all_price:{$gte:90}}},{$sort:{all_price:1}},{$skip:1}]) 跳过几条

   $lookup 表关联 看不懂去json格式化校验一下 (localField主表自己的,foreignField:要关联表的)
    db.order.aggregate([{$lookup:{from:"order_item",localField:"order_id",foreignField:"order_id",as:"items"}}])
    db.order.aggregate([{$lookup:{from:"order_item",localField:"order_id",foreignField:"order_id",as:"items"}},{$match:{all_price:{$gte:90}}}])

五.表json文件的导入与导出

        点击ADD DATA旁边的按钮确定要导出位置进行导出 

        要导入的话点击ADD DATA

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值