Neo4j 密码-返回1';随机';来自特定关系的节点

Neo4j 密码-返回1';随机';来自特定关系的节点,neo4j,cypher,Neo4j,Cypher,试图构建一个密码查询,每个“漫画”返回一个条目 基本结构如下: (Comic)<-[]-(Media)-[]->(MediaType) 我确信这很直截了当,我遗漏了一些东西。非常感谢您的帮助 布鲁诺密码: MATCH (mt:MediaType{Name: {mediatype}}) <-[:Is_Media_Of]-(m:Media)-[:Is_Media_For]-> (w:Webcomic) WHERE w.ComicID <> toInt({comi

试图构建一个密码查询,每个“漫画”返回一个条目

基本结构如下:

(Comic)<-[]-(Media)-[]->(MediaType)
我确信这很直截了当,我遗漏了一些东西。非常感谢您的帮助

布鲁诺密码:

MATCH (mt:MediaType{Name: {mediatype}})
<-[:Is_Media_Of]-(m:Media)-[:Is_Media_For]->
(w:Webcomic) WHERE w.ComicID <> toInt({comicid}) 
AND m.Status = 'Active' 
WITH distinct m, w 
RETURN m.URL as ImgURL, w.Name as ComicName, rand() as r 
ORDER BY r ASC Limit toInt({count})
ImgURL                       ComicName           r
"ms-rot-d1517513337.jpg"    "MoonSlayer"    0.09929832004330252
"ms-rot-b1517513245.jpg"    "MoonSlayer"    0.17924831869113889
"ms-rot-e1517513507.jpg"    "MoonSlayer"    0.23860836768580007
"mrRotator021516985058.jpg" "Mailbox Rocketship"    0.29152315193261946
"rotator1517004270.png" "Grapple Seed"  0.3167179880041201
目前的结果:

想要的结果: 试试看:

MATCH (mt:MediaType{Name: {mediatype}})<-[:Is_Media_Of]-(m:Media)-[:Is_Media_For]->(w:Webcomic)
WHERE w.ComicID <> toInt({comicid})
AND m.Status = 'Active'
WITH distinct w, mt, collect(m) as ms
RETURN ms[0].URL as ImgURL, w.Name as ComicName, rand() as r
ORDER BY r ASC Limit toInt({count})
MATCH(mt:MediaType{Name:{MediaType}})(w:Webcomic)
其中w.ComicID toInt({ComicID})
和m.状态=‘活动’
具有不同的w、mt、collect(m)作为ms
返回ms[0]。URL为ImgURL,w.Name为ComicName,rand()为r
按r ASC Limit toInt({count})排序

我基本上是按漫画分类,并将所有媒体收集到一个列表中。然后我返回列表的第一个元素。

您尝试过按媒体分组吗<代码>匹配(mt:MediaType{Name:{MediaType}})(w:Webcomic),其中w.ComicID-toInt({ComicID})和m.Status='Active'带有不同的m,w返回m.URL作为ImgURL,w.Name作为ComicName,rand()作为r-ORDER按r-ASC-Limit-toInt({count})@brunopes我尝试过使用collect,也尝试过使用distinct,但因为媒体和网络经济都是不同的(一个网络喜剧有3个不同的媒体,所有这些媒体都是它们自己的节点,我收到了相同的结果。我将修改答案,以包含我在运行您提到的DISTINCT时得到的第一个响应。您能用一些示例数据和预期结果创建一个吗?@BrunoPeres我想这就是您在console视图中的意思吗?试试看:
MATCH(mt:MediaType{Name:{MediaType}})(w:Webcomic)其中w.ComicID-toInt({ComicID})和m.Status='Active',具有不同的w,mt,collect(m)作为ms返回ms[0]。URL作为ImgURL,w.Name作为ComicName,rand()作为r-ORDER按r-ASC-Limit-toInt({count})排序。
ImgURL                       ComicName           r
"ms-rot-d1517513337.jpg"    "MoonSlayer"    0.09929832004330252
"ms-rot-b1517513245.jpg"    "MoonSlayer"    0.17924831869113889
"ms-rot-e1517513507.jpg"    "MoonSlayer"    0.23860836768580007
"mrRotator021516985058.jpg" "Mailbox Rocketship"    0.29152315193261946
"rotator1517004270.png" "Grapple Seed"  0.3167179880041201
MATCH (mt:MediaType{Name: {mediatype}})<-[:Is_Media_Of]-(m:Media)-[:Is_Media_For]->(w:Webcomic)
WHERE w.ComicID <> toInt({comicid})
AND m.Status = 'Active'
WITH distinct w, mt, collect(m) as ms
RETURN ms[0].URL as ImgURL, w.Name as ComicName, rand() as r
ORDER BY r ASC Limit toInt({count})