一:操作数据库增删改查
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