MongoDB进阶

管道: 前一个的输出作为后一个的输入

group

按籍贯分组显示各分组总和

db.stu.aggregate([{$group: {_id: '$hometown', count:{$sum:1}}}])

按性别分组显示平均年龄

([{    $group: {_id: '$gender',coutn:{$avg:"$age"}}            }])

根据性别分组显示名字

([{    $group: {_id: '$gender',coutn:{$push:"$name"}}            }])

按性别分组取第一个

([{    $group: {_id: '$gender',coutn:{$first:"$age"}}            }])

按性别分组取最后一个

([{    $group: {_id: '$gender',coutn:{$last:"$age"}}            }])

没有分组,求年龄平均值

([{    $group: {_id: null,avg_age:{$avg:"$age"}}            }])

按性别分组,取出所有数据:ROOT必须大写

([{    $group: {_id: "$gender",all_data:{$push:"$$ROOT"}}            }])

 

match

match的输出结果,作为group的输入

aggregate([{$match:{hometown: {$in:['蒙古','大理']}}},{$group:{_id: '$gender', all_name :{$push:"$name"}} }])

 

$project 投影

$project可以配合$group使用

aggregate([{},{$group:{_id: '$gender', all_name :{$push:"$name"}} },{$project: {_id:0, all_name:1}}])

 

排序

{$sort: {age: 1}}

跳过

{$skip : 2}

截取

{$limit: 2}

拆分只能拆分列表(数组)数据,再分别显示

{$unwind: "$age"}

 

 

索引(explain('executionStats'))显示查询时间

_id默认为索引,索引提高查询速度

db.stu.ensureIndex({name:1}) 1表示为确定创建

 

db.stu.getIndexes()

db.stu.dropIndex()# 删除索引,但是要删除索引的命名

 

备份

sudo mongodump -h 192.168.118.88 -d 数据库名 -o /data/

-h 表示ip

-d 表示备份数据库名

-o表示输出路径

备份后是二进制,恢复后在MongoDB中可以查看

 

恢复

sudo mongorestore -h ip -d Lagou --dir /data

-d 表示命名

--dir 表示指定备份数据路径(也可以不写)

 

 

posted @ 2017-12-05 17:32  这一盘是姜  阅读(310)  评论(0编辑  收藏  举报