首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有分页功能的Arangodb查询

具有分页功能的Arangodb查询
EN

Stack Overflow用户
提问于 2020-02-14 00:49:09
回答 1查看 85关注 0票数 0

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

代码语言:javascript
复制
{"name": "product1", "description": "someDescription", size: 5, groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 15, groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 25, groupNumber: 12}
{"name": "product1", "description": "someDescription", size: 35, groupNumber: 12}

{"name": "product2", "description": "someDescription", size: 5, groupNumber: 11}
{"name": "product2", "description": "someDescription", size: 15, groupNumber: 11}
{"name": "product2", "description": "someDescription", size: 25, groupNumber: 11}
{"name": "product2", "description": "someDescription", size: 35, groupNumber: 11}

我现在必须显示产品列表(在网页中),但每个产品应该只出现一次,每个产品的大小如下所示:

代码语言:javascript
复制
product1 someDescription sizes: 5,15,25,35
product2 someDescription sizes: 5,15,25,35
...

每页应包含最多25个产品。我想知道如何使用arangodb做到这一点,这是完全可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 03:11:26

关于第一个问题,对您的产品进行分组,这可以使用COLLECT完成。假设您从一个集合col中获得产品,您可以编写

代码语言:javascript
复制
FOR doc IN col
COLLECT groupNumber = doc.groupNumber, name = doc.name, description = doc.description INTO sizes = doc.size
RETURN CONCAT(name, " ", description, " sizes: ", CONCAT_SEPARATOR(",", sizes))

对于您的示例数据,这给出了

代码语言:javascript
复制
[
  "product2 someDescription sizes: 5,15,25,35",
  "product1 someDescription sizes: 5,15,25,35"
]

。您可能希望在COLLECT之后添加一条SORT语句以获得所需的顺序。

要解决您的第二个问题,即分页,请使用LIMIT。例如。

代码语言:javascript
复制
FOR doc IN col
COLLECT groupNumber = doc.groupNumber, name = doc.name, description = doc.description INTO sizes = doc.size
LIMIT @offset, 25
RETURN CONCAT(name, " ", description, " sizes: ", CONCAT_SEPARATOR(",", sizes))

并将绑定参数offset设置为0以获取第一个页面,将25设置为第二个页面,依此类推。

如果需要动态页面大小,只需将LIMIT @offset, 25替换为LIMIT @offset, @limit并添加额外的绑定参数即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60212862

复制
相关文章

相似问题

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