Neo4j电影模型中满足关系的第一个节点

Neo4j电影模型中满足关系的第一个节点,neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我已经阅读了Neo4j手册,并看到了许多关于电影图表的简短示例。我也在本地安装了它,并使用了密码 以下是设置: 我有以下节点:电影(有名字和id,归朋友所有)、演员(有名字和id)、导演(有名字和id)、流派(有id和名称) 关系是:演员在电影中表演(一部电影-许多演员),导演导演一部电影(每部电影一个导演,但一个导演可以导演许多电影),电影有几种类型(多对多) 1) 由friend所有我不知道为什么,但按照加载CSV示例,他们将USA作为节点而不是属性,但是否有逻辑原因,为什么像我这样将其作为

我已经阅读了Neo4j手册,并看到了许多关于电影图表的简短示例。我也在本地安装了它,并使用了密码

以下是设置: 我有以下节点:电影(有名字和id,归朋友所有)、演员(有名字和id)、导演(有名字和id)、流派(有id和名称)

关系是:演员在电影中表演(一部电影-许多演员),导演导演一部电影(每部电影一个导演,但一个导演可以导演许多电影),电影有几种类型(多对多)

1) 由friend所有我不知道为什么,但按照加载CSV示例,他们将USA作为节点而不是属性,但是否有逻辑原因,为什么像我这样将其作为节点而不是属性更好

(二) 我想搜索的内容与此问题的答案类似:

然而,我并不看重这种关系,它更像是“找到第一个连接到它的节点”

鉴于“由朋友拥有”只能由1人拥有

如果给定电影标题“蜘蛛侠”(例如,由frank拥有),请查找下一部由John拥有的电影

所以在阅读了Neo4j之后,我相信我不需要指定需要遍历哪个关系,只要找到下一部符合我标准的电影就行了,对吗

那么按照上面的链接

MATCH (n:Start { title: 'Spider-Man' }),
  (n)-[:CONNECTED*0..2]-(x)
RETURN x
因此,转到节点蜘蛛侠,找到我X,只要它是连接的,但我得到了*0..2的树桩,因为它的范围…如果我只是说“找到我第一个你,这意味着自己的约翰”


3) 接下来的第2题-如何插入fitler“own by john”?

你的问题中有很多东西没有太多意义。下面是一个尝试性的答案

1) 如果要基于国家/地区进行搜索,将“USA”设置为节点而不是属性非常有用。如果“USA”是节点,则可以通过从“USA”节点开始限制搜索。如果您不想这样做,则这并不重要。还可以为较长的国家/地区名称节省少量空间,以便存储名称一次并链接到该名称通过关系

2) 您的示例与您描述的图表不匹配。如果没有更好的示例,我真的说不出来

3) 一旦你改进了你的例子,这可能很容易回答


好的。根据对答案的评论,这里是您需要的。要找到John拥有的一部电影,通过普通演员、导演等与Frank拥有的电影《蜘蛛侠》(即(电影)(电影))相关联,您可以写:

MATCH (n:Movie {title : 'Spider-Man', owned_by : 'Frank'})<-[*2]->(m:Movie {owned_by : 'John'})
RETURN m LIMIT 1
MATCH(n:Movie{title:'Spider Man',所有者:'Frank'})(m:Movie{owned''John'})
返回m限制1

如果需要更多响应,请更改或删除RETURN子句的限制。如果希望允许通过(movie)(movie)(movie)等链的链,可以将匹配的关系数(*2)增加到4、6、8等。您可能不应该只将匹配子句的关系部分写为-[*]-,因为这可能会进入无限循环。

您从示例中具体了解了什么?让我试着这样说:“如果我有一个名为tag的属性,它是电影节点的一部分,并且我有3个关系将电影节点联系在一起,如果给电影一个起点(即电影名称)找到具有给定标记的第一对节点的正确密码是什么。问题是,如果我有300K个电影节点条目,而我有50K个标记为1的节点,那么找到第一个标记为1的节点的最有效方法是什么?give name=“give search title”。这更容易理解吗?让我试着陈述这个问题。从给定的电影开始,您如何找到具有特定属性值且通过演员或导演与给定电影相关的电影?是吗?通过给定的X关系。这些关系来自演员和导演,但也可以扩展到作家、制片人。。。。从长远来看。但你或多或少是对的。