Arangodb groupby查询多个字段

问题描述 投票:0回答:1

我有一个arangodb集合中的产品数据库,其中产品具有多种尺寸。问题是对于每种尺寸,都会重复相同的产品。但是每个产品都有一个共同的组号。像这样:

{"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
...

我该怎么办?

arangodb aql
1个回答
0
投票

忽略groupNumber并按name分组,查询看起来像这样:

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
    ]
  }
]
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.