gpt4 book ai didi

neo4j - 使用 neo4j/cypher 返回整个层次结构(树)

转载 作者:行者123 更新时间:2023-12-03 19:52:33 59 4
gpt4 key购买 nike

我有一个图表,其中包含类别层次结构(类似于购物网站上的产品类别,例如,服装 --> 男士 --> 衬衫 --> 短袖 --> ...)。我有几个用例需要将整个层次结构检索为树(在这种情况下是嵌套的 ruby​​ 和/或 javascript 对象)。我能想出的唯一解决方案是使用 NODES()检索每个唯一路径,然后将其转换为客户端中的嵌套对象。这样的性能显然是有问题的。

MATCH (store:Store),
(store)-[:hasCategory]->(category:Category),
categories=(category)-[:narrower*0..]->(:Category)
WHERE store.name = {name}
RETURN store, NODES(categories) AS categories

这将返回基本上是路径的结果行,例如:
[store, [category1, narrower_category1, narrower_category2, ...]]

在没有多次返回服务器或像上述查询那样大量获取数据的情况下,在 cypher 中处理此问题的正确方法是什么?

最佳答案

What's the proper way to handle this in cypher without numerous trips back to the server or a massive fetch of data like the above query?



如果你有一个很大的层次结构,你将有两个基本的选择:一次获取层次结构的几个级别(需要返回服务器以获取下一个块)或者你可以像你一样获取整个内容正在做。我没有看到第三个选项,因此如果没有这些功能中的任何一个,可能无法获得大的层次结构。

你在做什么似乎没问题,但没有进一步澄清你的问题似乎不可能。你现在做的事情有什么问题?您如何使用层次结构以及为什么一次需要它?例如。如果我在亚马逊上,他们有一个巨大的购物等级。通常他们只会先向我展示顶级产品(男装、女装、电子产品)。然后当我点击 Electronics 时,他们会向我展示下一个级别(“电子书阅读器”、“计算机”等)。这通常是要走的路,恕我直言-多次访问数据库,一次一个层次结构。这适用于网页上的 TreeView 和 AJAX 调用。当用户展开树时,您对服务器执行 AJAX 调用,并填充子项。

层次结构中的每个调用可能是:
MATCH (category:Category { id: "whatever user picked" })-[:narrower]->(children:Category)
RETURN children
ORDER BY children.name;

如果这种增量方法(一次一个级别)对您的用例不起作用,那么您将返回获取整个内容,这不可避免地将是“一次大量数据获取”。

关于neo4j - 使用 neo4j/cypher 返回整个层次结构(树),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120002/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com