Arangodb groupby查询多个字段
我有一个arangodb集合中的产品数据库,其中一个产品有多种尺寸。问题在于,对于每种尺寸,都会重复使用相同的产品。但每种产品都有一个共同的组号。像这样:Arangodb groupby查询多个字段,arangodb,aql,Arangodb,Aql,我有一个arangodb集合中的产品数据库,其中一个产品有多种尺寸。问题在于,对于每种尺寸,都会重复使用相同的产品。但每种产品都有一个共同的组号。像这样: {"name": "product1", "description": "someDescription", size: 5,price: 12 groupNumber: 12} {"name": "product1", "description": "someDescription", size: 15, price: 26, groupN
{"name": "product1", "description": "someDescription", size: 5,price: 12 groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 15, price: 26, groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 25, price: 84, groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 35, price: 106, groupNumber: 12}
{"name": "product2", "description": "someDescription", size: 5, price: 12, groupNumber: 11}
{"name": "product2", "description": "someDescription", size: 15, price: 22, groupNumber: 11}
{"name": "product2", "description": "someDescription", size: 25, price: 32, groupNumber: 11}
{"name": "product2", "description": "someDescription", size: 35, price: 43, groupNumber: 11}
我现在必须显示产品列表(在网页中),但每个产品应仅显示一次,每个产品的尺寸和价格如下所示:
product1 someDescription sizes: 5,15,25,35, prices: 12,26,84,106
product2 someDescription sizes: 5,15,25,35, prices: 12,22,32,43
...
FOR p IN products
COLLECT description = p.description, name = p.name INTO groups
RETURN {
"name" : name,
"description": description,
"prices" : groups[*].p.price,
"sizes" : groups[*].p.size
}
如何操作?忽略
groupNumber
并按name
分组,查询如下所示:
product1 someDescription sizes: 5,15,25,35, prices: 12,26,84,106
product2 someDescription sizes: 5,15,25,35, prices: 12,22,32,43
...
FOR p IN products
COLLECT description = p.description, name = p.name INTO groups
RETURN {
"name" : name,
"description": description,
"prices" : groups[*].p.price,
"sizes" : groups[*].p.size
}
给定(更正的)示例数据,查询将返回:
[
{
"name": "product1",
"description": "someDescription",
"prices": [
12,
84,
106,
26
],
"sizes": [
5,
25,
35,
15
]
},
{
"name": "product2",
"description": "someDescription",
"prices": [
43,
32,
22,
12
],
"sizes": [
35,
25,
15,
5
]
}
]
分组值未排序,但大小和价格的位置相对应,您可以通过将值压缩到大小价格图中来缓解这一事实:
FOR p IN products
COLLECT description = p.description, name = p.name INTO groups
RETURN {
"name" : name,
"description": description,
"size_price_map" : ZIP(groups[*].p.size, groups[*].p.price)
}
屈服:
[
{
"name": "product1",
"description": "someDescription",
"size_price_map": {
"5": 12,
"15": 26,
"25": 84,
"35": 106
}
},
{
"name": "product2",
"description": "someDescription",
"size_price_map": {
"5": 12,
"15": 22,
"25": 32,
"35": 43
}
}
]
考虑到你的声誉,你应该知道在这个社区里会有某种互动。我的回答有用吗?我错了吗?没有你方的确认,这个问答对其他访客来说几乎毫无价值。@TomRegner我不知道你的回答是对是错。但它看起来是正确的。我用了一种不同的方式,我会在一段时间内给出答案。同时享受向上投票:)我感兴趣的不是向上投票,请随意收回。aql/arango在这里不是一个非常活跃的小组,因此,我更关心Q/a的质量——如果我花时间设置一个测试用例并尝试解决一个问题,我很感激能给我一点时间来提高我们共同努力的有用性。