neo4j 添加 return 更改匹配的节点数量
neo4j adding a return changes the amount of nodes matched
我正在尝试执行搜索以获取一些基本数据。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN a
结果 = 56
备注
处理信件时,如果地址不在数据库中,则添加该地址,如果它已经存在,则创建与现有节点的关系。
因此,这里不应该存在不连接到 letter
节点的地址,尽管 relationship
可能是 sender
而不是 recipient
.
如果我添加字母计数,我会得到不同的地址计数。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN a, l
结果 - a = 2, l = 298
同样,如果我 return 只有字母,我会再次得到不同的数字。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN l
结果 - l = 300
我错过了什么?
我还以为MATCH
定义了查询,RETURN
只是选择要显示的部分信息,RETURN
如何改变匹配的数据?
要得到字母节点的总数,需要加上DISTINCT。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN count(distinct l) as numLetterNodes
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN count(distinct a) as numAddressNodes
当您开始组合结果中的字母和地址时,您最终会得到每行的聚合。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN DISTINCT a.id, count(l) as lettersPerAddress
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN DISTINCT l.id, count(a) as addressesPerLetter
我正在尝试执行搜索以获取一些基本数据。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN a
结果 = 56
备注
处理信件时,如果地址不在数据库中,则添加该地址,如果它已经存在,则创建与现有节点的关系。
因此,这里不应该存在不连接到 letter
节点的地址,尽管 relationship
可能是 sender
而不是 recipient
.
如果我添加字母计数,我会得到不同的地址计数。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN a, l
结果 - a = 2, l = 298
同样,如果我 return 只有字母,我会再次得到不同的数字。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN l
结果 - l = 300
我错过了什么?
我还以为MATCH
定义了查询,RETURN
只是选择要显示的部分信息,RETURN
如何改变匹配的数据?
要得到字母节点的总数,需要加上DISTINCT。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN count(distinct l) as numLetterNodes
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN count(distinct a) as numAddressNodes
当您开始组合结果中的字母和地址时,您最终会得到每行的聚合。
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN DISTINCT a.id, count(l) as lettersPerAddress
MATCH(l:letter)-[:RECIPIENT]-(a:address{country: "England"})
RETURN DISTINCT l.id, count(a) as addressesPerLetter