在我的数据库中,每个包含项目的文档内都有一个嵌套的元素数组,格式如下:
elements:[
{
"elem_id": 12,
items: [ {"i_id": 1, "type": x}, {"i_id": 2, "type": y}, {"i_id": 3, "type": x}]
},
{
"elem_id": 13,
items: [ {"i_id": 4, "type": x}, {"i_id": 5, "type": x}]
}
]
我尝试返回所有包含不同类型项的元素,这意味着我只会返回:
{
"elem_id": 12,
items: [ {"i_id": 1, "type": x}, {"i_id": 2, "type": y}, {"i_id": 3, "type": x}]
}
因为存在类型X和类型Y的项。
我想我需要迭代items数组,并将数组中每一项的类型与前一项的类型进行比较,但我不知道如何在聚合中做到这一点。
只是要注意-我使用的是Redash,所以我不能在查询中包含任何JS。
感谢您的帮助!
2条答案
按热度按时间t30tvxxf1#
试试这个:
输出:
oipij1gg2#
您可以稍微简化一下答案(无需使用
$reduce
或$addFields
):了解它在playground example上的工作原理