【发布时间】:2015-01-10 08:33:21
【问题描述】:
我有一个要求,我需要对两条记录进行聚合,这两条记录都有一个具有不同值的数组字段。我需要的是,当我对这些记录进行聚合时,结果应该有一个数组,该数组具有来自两个不同数组的唯一值。这是示例:
第一条记录
{ Host:"abc.com" ArtId:"123", tags:[ "tag1", "tag2" ] }
第二次记录
{ Host:"abc.com" ArtId:"123", tags:[ "tag2", "tag3" ] }
在主机和 artid 上聚合后,我需要这样的结果:
{ Host: "abc.com", ArtId: "123", count :"2", tags:[ "tag1", "tag2", "tag3" ]}
我在组声明中尝试了$addToset,但它给了我这样的标签:[["tag1","tag2"],["tag2","tag3"]]
您能帮我如何在聚合中实现这一目标
【问题讨论】:
-
@Neil Lunn 我已将其移至此处。如果我在文档中有多个这样的数组,您能否建议我一些在这种情况下应该选择的方法。至于每个数组,我必须按照您的解释重复聚合。但是,如果我在每个数组的第一组中使用 $addToSet,那么我将获得数组数组,我可以在 java 中解析它以为每个字段创建新数组,在这种情况下,我将只为每个所有记录运行一次聚合
-
我们似乎在这里误会了。您应该已经运行了我在dba.stackexhange.com 上提供的代码,其目的是让问题迁移。它不会产生数组数组。既然你已经这样做了,也会在这里再次发布。您需要查看“双重”
$unwind并实际运行代码。 -
@NeilLunn 抱歉,我并不是说这段代码不能正常工作,它可以完美地工作,它解决了我使用单个数组的问题,但是如果我在文档中有两个或更多数组字段并且所有需要以相同的方式处理。所以在这种情况下,我需要对每个数组字段重复该过程
-
我认为你误解了这一点。这不是要移动您问自己的问题,而是要问您关于文档中“多个数组”的 new 问题。这是一个新问题,而不是对原始问题的补充。你还没问。详细询问您的问题。
标签: mongodb mongodb-query aggregation-framework