上一篇讲解了使用mongodb的文本搜索,现在再来补充一个mongodb中的高级搜索--聚集框架
聚集框架的概念很像介绍Redis时介绍的管道概念,因为顾名思义,聚集框架,就是将一堆命令集合在一起运行,但是注意不像关系型数据库中介绍的事务一样,只是一堆命令按照一定的规则组合在一起执行而已。
为了讲解方便,先插入几组数据
date1={
'id':1,
'sub_id':2,
'belong_to':[1,2,3,4]
}
date2={
'id':1,
'sub_id':3,
'belong_to':null
}
date3={
'id':2,
'sub_id':2,
'belong_to':[]
}
date4={
'id':2,
'sub_id':3,
'belong_to':5
}
db.date.insert(date1)
db.date.insert(date2)
db.date.insert(date3)
db.date.insert(date4)
先不用管这些数据有什么特点,接下来介绍如何使用聚集框架
首先要构建聚集管道来存放聚集命令,构建聚集管道是使用函数 aggregate
db.collection_name.aggregate()
至于聚集命令就写在括号内部,下面直接看这几个例子
--------------------------------------------------------------$group-------------------------------------------------------------------
$group
db.date.aggregate(
{
$group:{_id:'$id'}
})
返回结果如下
可以看到就是将文档按照id字段进行了分组,并且返回。
但是在这里说几点注意点:
1、命令中的_id是指定的,不能修改的,如果你换成_ids这样的你自己定义的,mongodb是不认识的,会报错,所以注意,只能使用_id指定分组字段
2、_id:'$id' 后面的 id 是文档中的定义的字段,这个名字可以根据你的文档内容而定,我的文档中恰好是 id,选好你文档中的key_name