在Neo4j作为示例图表附带的电影图表中,我想查询:获取由导演The Matrix
电影的同一人指导和编写的电影。
这是我正在使用的查询
Match(m:Movie{title:'The Matrix'})<-[r:DIRECTED]-(p:Person)-[r2]->(n:Movie)
where type(r2)='DIRECTED' and type(r2)='WROTE'
return p,n
此查询无效但如果我将OR子句而不是AND子句。它会工作。使用OR子句向我提供由导演The Matrix
电影的同一导演编写或指导的电影列表。请让我知道为什么AND子句不适用于类型(r)。
答案 0 :(得分:2)
如果您在人物和电影之间同时拥有DIRECTED和WROTE两种关系,那么您将拥有两条结果线,而不是一条。 像
a |type(r) |b
a |DIRECTED|b
a |WROTE |b
所以当你设置或者,你得到两条线。但是当你说并且你实际上什么都没有因为同时指导&lt;&gt;(指导和写) 如果你的意思是人和电影之间应该有DIRECTED和WROTE关系,那么查询应该是
Match (m:Movie{title:'The Matrix'})<-[r:DIRECTED]-(p:Person)-[r2:DIRECTED]->(n:Movie),
(p)-[r3:WROTE]->(n)
return p,n
答案 1 :(得分:1)
这可能是查找所有由“黑客帝国”导演编写和导演的电影的最简单的查询:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
SSPhotoSelectionViewController *controller = (SSPhotoSelectionViewController *) segue.destinationViewController;
if ([segue.identifier isEqualToString:@"SelectPhotosSegue"]) {
if (self.albumsButton.selected) {
[controller.downloadButton setText:SSPhotosButtonTextAdd];
}
else if (self.galleryButton.selected) {
[controller.downloadButton setText:SSPhotosButtonTextDownload];
}
}
}