首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arangodb查询多个字段

Arangodb查询多个字段
EN

Stack Overflow用户
提问于 2020-02-16 00:41:46
回答 1查看 223关注 0票数 1

我在一个arangodb集合中有一个产品数据库,其中一个产品有多种尺寸。问题是,对于每种尺寸,相同的产品都是重复的。但每种产品都有一个共同的组号。如下所示:

代码语言:javascript
复制
{"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}

我现在必须显示产品列表(在网页中),但是每个产品应该只出现一次,每个产品的大小和价格都是这样的:

代码语言:javascript
复制
product1 someDescription sizes: 5,15,25,35, prices: 12,26,84,106
product2 someDescription sizes: 5,15,25,35, prices: 12,22,32,43
...

我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 17:13:07

忽略groupNumber并按name分组,查询如下所示:

代码语言:javascript
复制
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
  }

给定(更正后的)示例数据,查询将返回:

代码语言:javascript
复制
[
  {
    "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
    ]
  }
]

分组的值没有排序,但大小和价格的位置对应,您可以缓解这一事实,将值压缩到大小-价格映射中:

代码语言:javascript
复制
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)
  }

让步:

代码语言:javascript
复制
[
  {
    "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
    }
  }
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60240849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档