【发布时间】:2015-10-07 18:12:29
【问题描述】:
MATCH (category:Category {id:'123'} ),
(stream:Stream {id:'567'} )
OPTIONAL MATCH path=(stream)-[:CONTAINS]->(categories:Category)-[:CHILD_OF*0..50]->(category)-[:CHILD_OF*0..50]->(subcats2:Category)<-[:PHOTO_OF]-(photo)
with stream, subcats2, photo
OPTIONAL MATCH (stream)<-[:PARTICIPANT_OF]-(users:User)-[:OWNER]->(photo)-[:PHOTO_OF]->(subcats:Category
return photo
我想要这样的查询;
如果流contains 类别做第一个可选
如果流(有)participants 用户执行第二个可选操作
如果两者都返回照片的交集
但是在上面的查询中;就像联合查询一样,如果流有参与者或用户,则返回 OK,但如果它同时具有类别和用户,则无法取交集。
需要类似的东西
MATCH (category:Category {id:'123'} ),
(stream:Stream {id:'567'} )
MATCH (stream)-[:CONTAINS]->(categories:Category)
WITH count(categories) as cat_count
IF cat_count > 0
MATCH path=(stream)-[:CONTAINS]->(categories:Category)-[:CHILD_OF*0..50]->(category)-[:CHILD_OF*0..50]->(subcats2:Category)<-[:PHOTO_OF]-(photo)
with stream, subcats2, photo
MATCH (stream)-[:PARTICIPANT_OF]->(users:User)
WITH count(users) as user_count
IF user_count > 0
MATCH (stream)<-[:PARTICIPANT_OF]-(users:User)-[:OWNER]-> (photo)-[:PHOTO_OF]->(subcats:Category
return photo
有什么想法吗?
【问题讨论】:
-
subcats应该是subcats2吗? -
它们是不同的子猫,这不是重要的部分@cybersam
-
我并不是要暗示这是最重要的事情 :-),但它确实会影响任何潜在的解决方案。