10-MongoDB复合查询

第10讲 MongoDB复合查询

整体课程知识点查看 :https://blog.csdn.net/j1451284189/article/details/128713764

本讲总结

MongoDB查询展示

MongoDB复合查询

MongoDB索引查询与设置

MongoDB备份与恢复

一、MongoDB 查询结果显示

# 看特定个数
db.MyCollection.find().limit(4)  #前4个
db.MyCollection.find().skip(2)  #跳过前两个
db.MyCollection.find().skip(2).limit(4)
db.MyCollection.find().skip(5).limit(4) 
#投影 只看特定字段
db.MyCollection.find({}, {name:1,age:1})
#统计
db.MyCollection.find({salary:false}).count()
db.MyCollection.count({salary:false})
db.MyCollection.count()
db.MyCollection.find().count()
# 排序
db.MyCollection.find().sort({'age':1})  #升序
db.MyCollection.find().sort({'age':1,'id':-1}) 
# 去重
db.MyCollection.distinct('age',{范围与条件}) # 去重非删除数据,只是看数据分布范围

二、MongoDB复合查询

//aggregate  聚合查询
db.MyCollection.aggregate(
    [
        {管道1},
        {管道2}]
)

db.MyCollection.aggregate([{$group:{_id:'$salary'}}])  //$group 分组

//$group 分组
//表达式 $sum $avg $max $min $first $last $push
db.MyCollection.aggregate([
    {$group:{_id:'$salary', sumage:{$sum:'$age'}}}  //性别分组年龄之和  $sum求和
])

db.MyCollection.aggregate([
    {$group:{_id:'$salary', avgage:{$avg:'$age'}}}  //性别分组年龄  $avg平均
])

db.MyCollection.aggregate([
    {$group:{_id:'$salary', maxage:{$max:'$age'}, minage:{$min:'$age'}}}  // $max最大值 $min最小值
])

db.MyCollection.aggregate([
    {$group:{_id:'$salary', first_age:{$first:'$age'}, last_age:{$last:'$age'}}}  // $first第一个 $last最后一个
])

db.MyCollection.aggregate([
    {$group:{_id:'$salary', animate:{$push:'$age'}}}  // $push分布
])


//$match == find find不能使用管道传递
db.MyCollection.aggregate([
    //年龄20的人有哪些 与find效果相同
    {$match:{'age':20}}
])

db.MyCollection.aggregate([
    //求年龄大于15  的男女平均年龄
    {$match:{'age':{$gt:15}}},
    {$group:{_id:'$salary',avgage:{$avg:'$age'}}}
])

//$project 投影
db.MyCollection.aggregate([
    // $只显示年龄之和
    {$match:{'age':{$gt:15}}},
    {$group:{_id:'$salary', maxage:{$max:'$age'}, minage:{$min:'$age'}}},
    {$project:{minage:1}}
])

//$sort 投影
db.MyCollection.aggregate([
    {$sort:{'age':-1}}// $年龄降序
])

//skip  limit
db.MyCollection.aggregate([
    {$skip:2},
    {$limit:3}, //3,4,5
])
db.MyCollection.aggregate([
    {$limit:3},
    {$skip:2}, //3
])


//unwind 拆分
db.MyCollection.aggregate([
    {$group:{_id:'$salary',allname:{$push:'$name'}}},//男女分组及分组后的名字
    {$unwind:"$allname"} //拆分
])

//混用
db.MyCollection.aggregate([
    {$match:{'age':{$gt:15}}},
    {$group:{_id:'$salary', maxage:{$max:'$age'}, minage:{$min:'$age'}}},
    {$project:{minage:1}},
    {$sort:{'minage':-1}}
])

三、MongoDB索引查询

for(var i=0;i<=500000;i++){
	db.data.insert({
	_id:i,
	user:'user'+i,
	age:i
	})
}

db.data.find({_id:250000}).explain('executionStats') //速度最快  1ms
db.data.find({user:'user250000'}).explain('executionStats')//速度最快  300ms
db.data.find({age:250000}).explain('executionStats')//速度最快  200ms

//开发中设置内容的key为id,提高查询速度
db.data.ensureIndex({user:1})
db.data.find({user:'user250000'}).explain('executionStats') //2ms
db.data.ensureIndex({age:1}) //2ms
db.data.getIndexes() //查看索引
db.data.dropIndex('age_1')//删除索引

四、备份与恢复

命令行运行

//备份  
mongodump -h 127.0.0.1:27017 -d local -o C:\Users\Administrator\Desktop\beifen
//恢复
mongorestore -h 127.0.0.1:27017 -d beifen --dir C:\Users\Administrator\Desktop\beifen\local
//导出文件
mongoexport -h 127.0.0.1:27017 -d beifen -c MyCollection -o data.json  // c Administrator
mongoexport -h 127.0.0.1:27017 -d beifen -c MyCollection -o data.csv --type csv -f id,user,age,salary
//导入文件
mongoimport -h 127.0.0.1:27017 -d beifen -c stu --file data.json

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值