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
Neo4j 统计相关销售关系的数量_Neo4j_Cypher - Fatal编程技术网

Neo4j 统计相关销售关系的数量

Neo4j 统计相关销售关系的数量,neo4j,cypher,Neo4j,Cypher,正在寻找密码查询方面的帮助。给定一组拥有书籍p的peer客户,我能够检索到一组至少拥有一本同样属于peer但不拥有p书籍的target。这是使用以下查询完成的: match (p:Book {isbn:"123456"})<-[:owns]-(peer:Customer) -[:owns]->(other:Book)<-[o:owns]-(target:Customer) WHERE NOT( (target)-[:owns]->(p)) return target

正在寻找密码查询方面的帮助。给定一组拥有书籍
p
peer
客户,我能够检索到一组至少拥有一本同样属于
peer
但不拥有
p
书籍的
target
。这是使用以下查询完成的:

match 
(p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
  -[:owns]->(other:Book)<-[o:owns]-(target:Customer)
WHERE NOT( (target)-[:owns]->(p))
return target.name
limit 10;
我还尝试了我的新手眼中最合理的问题:

match 
  (p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
  -[:owns]->(other:Book)<-[o:owns]-(target:Customer)
WHERE NOT( (target)-[:owns]->(p))
return target.name, count(o)
limit 10;
我在寻找每个客户具体拥有的图书数量,不确定这些
12840
11501
数字到底来自哪里。有什么想法吗?

这个怎么样:

MATCH (p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
WITH distinct peer, p
MATCH (peer)-[:owns]->(other:Book)
WITH distinct other, p
MATCH (other)<-[o:owns]-(target:Customer)
WHERE NOT((target)-[:owns]->(p))
RETURN target.name, count(o)
LIMIT 10;
MATCH(p:Book{isbn:“123456”})(其他:Book)
与其他人不同,p
比赛(其他)(p))
返回target.name,计数(o)
限制10;

isbn上有索引吗?顺便说一句,第一个查询有“pisbn”-它应该是“isbn”吗?修复了那个打字错误,这是我输入错误的查询,呃。我刚刚创建了一个要点:。(对我来说)令人困惑的是,查询的工作原理与广告的完全相同(数据集非常小)。也许查询只需要运行一段时间就可以完成?现在检查索引。我确实有索引集:$schema index ON:Book(isbn)ONLINE可以查看查询状态吗,类似于MySQL的
show processlist
?在我看来,这似乎是Neo4j的一个相当神秘的方面,当查询执行时,很难监控到底发生了什么。嘿@WesFreeman好的,我有点进展了,请看上面的编辑,因为查询确实执行了,但它返回的客户拥有的图书数量显然不准确。接近!有什么想法吗?就是为任何一位同行拥有的每一本匹配的书找到一个o。Distinct会解决问题,但我认为你可以重写,现在我会发布一个答案,因为我想我更了解你在做什么。
+-------------------------------+
| target.name        | count(o) |
+-------------------------------+
| "John Smith"       | 12840    |
| "Mary Moore"       | 11501    |
+-------------------------------+
MATCH (p:Book {isbn:"123456"})<-[:owns]-(peer:Customer)
WITH distinct peer, p
MATCH (peer)-[:owns]->(other:Book)
WITH distinct other, p
MATCH (other)<-[o:owns]-(target:Customer)
WHERE NOT((target)-[:owns]->(p))
RETURN target.name, count(o)
LIMIT 10;