Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j-如何处理多维聚合_Neo4j_Cypher - Fatal编程技术网

Neo4j-如何处理多维聚合

Neo4j-如何处理多维聚合,neo4j,cypher,Neo4j,Cypher,我是Neo4j的新手,尝试了解如何处理多维聚合。 例如,我有一个人,当他接到任务时,他会把产品送到不同的城市。我有个人、产品和城市等节点,它们之间有关系(交付产品和交付对象)。我的数据如下 P1 - [delivered Products A1, A2 ] - [to City C1] P1 - [delivered Products A1 ] - [to City C2] P1 - [delivered Products A1, A2] - [to City C2] 我在我的图dbP1

我是Neo4j的新手,尝试了解如何处理多维聚合。 例如,我有一个人,当他接到任务时,他会把产品送到不同的城市。我有个人、产品和城市等节点,它们之间有关系(交付产品和交付对象)。我的数据如下

P1 - [delivered Products A1, A2 ] - [to City C1]
P1 - [delivered Products  A1 ] - [to City C2] 
P1 - [delivered Products A1, A2] - [to City C2] 
我在我的图dbP1中存储了如下聚合-交付3次产品A1

P1 - delivered 2 times Product A2 
P1 - delivered 1 time to city C1
P1 - delivered 2 times to city C2 
附图显示了上述连接

现在我想看看P1向C2市交付产品A1的次数
[P1-A1-C2]或P1向城市C1交付产品A1的次数[P1-A1-C1] 尝试使用产品和城市维度查看数据


我们在Graph db中是否有任何设计模式来处理多维聚合类型,或者我们是否需要将上述组合与聚合一起存储在Graph db中?

我相信这里的主要问题是您的模型。由于您有一个带有类似于
(Person)-[:DELIVERED]->(:Product)-[:TO]->(:City)
的模型的图形,因此无法知道哪些交付是到特定城市的。
:Person
:Product
之间的关系
[DELIVERED{times:3}]
(例如)无助于回答您向数据库提出的问题

帮助您的一个好方法是在模型中添加一个名为
:Delivery
的新节点类型。这样,图形将如下所示:

(:Person)-[:MADE]->(:Delivery)
(:Delivery)-[:TO]->(:City)
(:Delivery)-[:PRODUCT]->(:Product)
正如您所看到的,一个节点
:Delivery
:Person
:City
:Product
相关

现在我想看看P1向A1交付产品的次数 城市C2[P1-A1-C2]或P1向其交付产品A1的次数 城市C1[P1-A1-C1]尝试使用产品和城市查找数据 尺寸

我相信此查询将根据提议的模型回答您的问题:

MATCH (:Person {id:'P1'})-[:MADE]->(d:Delivery)-[:PRODUCT]->(:Product {id:'A1'}),
(d)-[:TO]->(:City {id:'C1'})
RETURN count(d)

谢谢布鲁诺。但我想知道,如果我每天都有成千上万的交付,我会将完整的信息像事务数据一样再次存储在Graph db中。数据将呈指数级增长。我试图将我的Graph db视为聚合数据库,其中我希望每月查看一次,有多少产品A1交付给城市C1等。在我的实时数据中,我将有多个维度用于此交付。您好。我相信我能帮你。谢谢布鲁诺。。这是了解图形版本控制的非常好的链接。这里也。。数据未存储在销售id级别。。而且对销售来说只有一个维度“产品”。