给定一个如下所示的数组,我如何计算每个“水果”类型的出现次数 Jora查询?
[
{"fruit": "apple"},
{"fruit": "orange"},
{"fruit": "banana"},
{"fruit": "banana"},
{"fruit": "apple"},
{"fruit": "apple"}
]
我正在寻找这样的答案:
[
{"fruit": "apple", "count": 3},
{"fruit": "orange", "count": 1},
{"fruit": "banana", "count": 2}
]
最佳答案
以下查询将为您提供所需的答案:
group(<fruit>).({fruit: key, count: value.size()})
或更明确地说,包括隐式选择器:
@.group(<$.fruit>).map(<{"fruit": $.key, "count": $.value.size()}>)
为了分解它,我们首先使用 group()
method ,将 <>
的选择器的“函数”(尖括号 fruit
)传递给它。请注意,我们可以省略隐式查询输入选择器 @.
它可以在方法调用和隐式范围选择器之前 $.
在 fruit
选择器。
所以group(<fruit>)
给我们的结果是:
[
{ "key": "apple", "value": [{…}, {…}, {…}] },
{ "key": "orange", "value": [{…}] },
{ "key": "banana", "value": [{…}, {…}] }
]
然后我们可以使用 map()
方法或映射的括号重载 .()
,带有我们正在寻找的结果的对象定义 {fruit: key, count: value.size()}
,创建一个新数组,给出计数或 .size()
value
的group()
的结果中的数组.
这对我来说已经足够挣扎了,Jora足够新,文档有限,我认为询问和回答这可能会对某人有所帮助。
关于json - 如何使用 Jora 查询计算 JSON 中的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58430062/