使用JSONata按categoryId分组数据:多类别ID数组分组难题
解决数组形式categoryId的分组问题
要处理包含数组型categoryId的数据分组,你可以先把每个多分类的条目拆分成对应数量的独立条目,再按单个categoryId分组,具体JSONata表达式如下:
$flatmap($, function($item) { $map($item.categoryId, function($cid) { $merge([$item, {"categoryId": $cid}]) }) }) |> $groupBy($.categoryId)
步骤说明:
- 拆分条目:用
$flatmap遍历原始数据,对每个含数组categoryId的条目,通过$map遍历其分类ID数组,复制原条目并将categoryId替换为单个值,$flatmap会自动把所有拆分后的结果扁平化,得到一份每个条目仅含单个分类ID的数据集。 - 分组:将拆分后的数据集通过
$groupBy($.categoryId)按分类ID完成分组,就能得到每个分类对应的所有关联条目。
如果需要对每个分类下的条目去重(比如同一个原条目不要重复出现在多个分组里),可以在拆分后加一层$distinct处理,或者根据业务需求调整逻辑。
内容的提问来源于stack exchange,提问作者İsmail Can Karataş
相关产品推荐
相关产品推荐

