MongoDB 聚合嵌入的数组

MongoDB学习教程:https://piaosanlang.gitbooks.io/mongodb/

先看下要操作的主要数据结构:

看这个文档数据,现在要以 tips 数组下的 _id 做数据的分组查询。在查询条件中使用 "tips.0._id":1000 过滤数据是可以生效的,但用在 aggregate 聚合查询中的 group 分组条件中是不行的,必须得先使用$unwind( 文档地址:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/ )把 tips 这个数组对象变成扁平的结构(把数组中的每个对象拆分出来与当前文档重新组合,达到消数组的效果)

上面数据根据以下查询语句的前后变化

扁平化前:

扁平化后:

关注扁平化前后 tips 由数组变成了对象

通过{'$unwind' : '$tips'}对文档扁平化结构之后,然后再用 pipeline (管道)的方式做聚合就好了,可以直接根据tips._id进行分组了

查询语句:

完美滴根据 tipId,tipName,evaluationType 分好组了

关注公众号,分享干货,讨论技术

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180624G0SXE300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券