小太阳的菜鸟经历---之mongo篇

mongo聚合框架

概念(个人理解)

    个人理解:这个是mongo专本用来统计数据使用的。
    		通过管道处理集合中的文档。
    		例如:筛选(filtering),投射(projecting),
    			 分组(grouping),排序(sorting),
    			 限制(limiting),跳过(skipping)。

优点

简化应用程序代码
约束资源需求

发现的坑-也许是我使用问题

  1. 超大数据集索引尽量就不要创建了(eg:亿级就不要尝试了)。
    (我比较菜,这个是有故事的,千万级别的使用后台创建应该没什么问题)
  2. 复合索引建的时候要看好,内部字段对应的索引规则,以及索引顺序,否则复合索引是不生效的(未测试,待验证
  3. 索引删除后内存不会立即下降,使用管理员账号操作该语句可以实现db.runCommand({closeAllDatabases:1}),但是!!!建议在有备库等情况下操作。

待考证

Mongodb对内存的使用是没有限制的,它会一直耗尽服务器所有内存,但是据说在其他应用程序申请内存时,它会自动释放一些内存。

管道

概念理解(个人理解)

流水线操作,操作完成之后的结果,作为下一个操作的入参,一步一步的进行操作处理。管道操作可重复,eg:筛选-排序-筛选。管道操作只针对单一文档。

管道操作

$match:sql-where操作(过滤)
db.getCollection("集合名称).aggregate([
    {
        $match: {
            表字段1: 筛选条件1,
            表字段2: 筛选条件2,
            ...
        }
    }
])
$match里的常用操作

$eg/ $gt/ $gte/ $lt / $lte
$and / $or / $not / $in

$project: (修改输入文档结构-限制入参-投影)

投影中也可以操作入参类型,值等。。(eg:截取字段前2位作为入参。)

db.getCollection("集合名称).aggregate([
	{
		$project:{
			"name":"$表字段1",
			"age":"$表字段2",
			"表字段名称":{$substr ["$字段", 0, 2]}
			.......
		}
    }
])
$group

group by 分组

db.getCollection("app_track_data").aggregate([
    {
    	$group: {
            _id: {
                表字段1: "$表字段1",
                表字段2: "$表字段2",
                .....
            },
            total: {
                $sum: 1
            }
        }
    }
])
$group 操作

$sum / $avg / $max /min
(还有很多。我懒了。)
详细请参考。(我觉得很详细了)

https://blog.csdn.net/xiewenfeng520/article/details/114577394?utm_source=app&app_version=4.5.8

我暂时只是写了我用到的3个,下面我要写聚合框架的索引。

索引

索引详细内容请点这个。超级详细了。。棒~

应用索引(使用实现语句)
  • 创建索引:db.COLLECTION_NAME.createIndexes({索引键名:排序规则})
  • 删除索引:db.COLLECTION_NAME.dropIndex(“索引名称”)
  • 删除全部索引:db.COLLECTION_NAME.dropIndexes()
  • 重建索引:db.COLLECTION_NAME.reIndex()
  • 创建复合索引(后台创建):db.c1.createIndex({name:1,age:1},{background:true});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值