管道: 前一个的输出作为后一个的输入
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 表示指定备份数据路径(也可以不写)