site logo

Keep doing what you want, never give up.

文章配图

MongoDB聚合查询aggregate之group分组

MongoDB中并没有类似MySQL关系型数据库中Left Join这种连表查询,但是它提供了一个称为aggregate的聚合管道查询语法来让我们实现类似MySQL那样的关联查询。其大致思路就是将多个查询语句按顺序逐一执行,然后汇总结果。 假设我们有两个集合,一个用户集合用来存放用户信息名字叫user,另外一个集合名叫photo用来存放用户的照片信息。 用户集合user ------------------------- | uid | name | |-----------|-----------| | 100000 | A | | 100001 | B | | 100002 | C | ------------------------- 照片集合photo ----------------------------- | uid | photo | |-----------|---------------| | 100000 | A的照片一 | | 100001 | B的照片一 | | 100000 | A的照片二 | | 100002 | C的照片一 | ----------------------------- 现在的需求是查出user表中所有用户的照片集合,相同用户的照片需要合并在一个数组中: 查询结果 ------------------------------------------------- | uid | name | photo | |-----------|---------------|-------------------| | 100000 | A | A的照片一,A的照片二 | | 100001 | B | B的照片一 | | 100002 | C | C的照片一 | ------------------------------------------------- 这时我们就可以联合aggregate语句的$lookup、$unwind、 $project以及$group语法得出想要的结果,查询语句如下: