我已经开发了以下查询,以查找满足特定查询条件的所有节点。 具体而言,所有满足特定参数的疾病代码。 我已使用UNION在代码中完成此操作:

//Find all diagnosis codes
MATCH p = (a:ObjectConcept{sctid:233604007}) <-[:ISA*]- (b:ObjectConcept),
      q = (c:ObjectConcept{sctid:58800005})<-[:ISA*]-(d:ObjectConcept) 
WHERE NOT (b)-->()--(c) AND NOT (b)-->()-->(d) 
RETURN distinct b 
UNION  
MATCH p = (a:ObjectConcept{sctid:233604007}) <-[:ISA*]- (b:ObjectConcept), 
      t = (e:ObjectConcept{sctid:65119002})<-[:ISA*]-(f:ObjectConcept) 
WHERE NOT (b)-->()-->(e) AND NOT (b)-->()-->(f) 
RETURN distinct b

我想关心这个查询的结果。 这就是集合(区别b)并找到所有患有这些疾病的患者。

Pseudo-code: Match s = (nodes in distinct b) <-[:HAS_DX]- (z:Patient) 
RETURN  distinct z

但是,我不知道将不同节点b的集合携带到此后续查询语句中的Cypher语法。 我正在使用Neo4j v 2.1.7。

谢谢

#1楼 票数:1

这个查询对您有用吗?

MATCH p = (a:ObjectConcept{sctid:233604007})<-[:ISA*]-(b:ObjectConcept)<-[:HAS_DX]-(z:Patient),
      q = (c:ObjectConcept)<-[:ISA*]-(d:ObjectConcept) 
WHERE (c.sctid = 58800005 OR c.sctid = 65119002) AND NOT (b)-->()-->(c) AND NOT (b)-->()-->(d) 
RETURN DISTINCT z;

#2楼 票数:0

以下查询成功。 它要求将所需输出的所有方面匹配到每个子查询中,以使列标题都相同。 查询时间少于1秒。

MATCH p = (a:ObjectConcept{sctid:233604007}) <-[:ISA*]- (b:ObjectConcept),
      q = (c:ObjectConcept{sctid:58800005})<-[:ISA*]-(d:ObjectConcept) 
WHERE NOT (b)-->()--(c) AND NOT (b)-->()-->(d) 
with distinct b
MATCH (t:Patient)-[:HAS_DX]-> (b)
RETURN distinct t.patient_id,b.FSN 
UNION  
MATCH p = (a:ObjectConcept{sctid:233604007}) <-[:ISA*]- (b:ObjectConcept), 
      t = (e:ObjectConcept{sctid:65119002})<-[:ISA*]-(f:ObjectConcept) 
WHERE NOT (b)-->()-->(e) AND NOT (b)-->()-->(f) 
with distinct b
MATCH (t:Patient)-[:HAS_DX]-> (b)
RETURN distinct t.patient_id,b.FSN;

  ask by Scott Campbell translate from so

未解决问题?本站智能推荐:

1回复

Neo4j-密码节点和关系关系

我有以下查询: 从上面的查询中您可能会看到-最后,我试图过滤与rel有关系的childD节点,但我不知道如何在Cypher中对其进行描述。 像(childD)-(rel)或(childD)-[rel]不起作用并导致错误。 请帮忙
1回复

Neo4j-更新两个节点之间的关系(如果已存在),否则使用给定属性创建关系

我迷上了Cypher。 如果关系已经存在,我想更新两个现有(唯一)节点之间的关系,如果这两个节点之间没有关系,我想创建此关系。 在这种情况下正确的Cypher语法是什么? 我已经尝试过了 导致错误 : 无效的输入“ E”:预期的“ a / A”(第1行,第185列(偏移量:1
2回复

Neo4j:REST API密码查询以查找两个节点之间的关系

我是Neo4j的新手,正在使用REST API创建节点和关系。 我有两个节点NA和NB,它们通过关系RC连接。 'NA-RC-NB'。 在创建节点和关系之前,请检查节点和它们之间的关系是否不存在。 我弄清楚了如何检查一个节点是否存在,并且正在努力检查两个节点之间的关系是否存在。 我想出
2回复

Neo4j-节点之间的过滤关系

我有这种关系: 我想算一下,然后计算到:Tweet节点的所有传入关系的平均值,但不包括()-[:POSTS]-()关系。 我应该如何正确地做到这一点? 到目前为止,我可以运行此查询来计算所有传入关系的平均值: 谢谢。
1回复

Neo4j-在列表中的节点之间添加额外的关系

我有一个节点列表,代表用户形成的事件的历史记录,其模式如下: ()-[:s]->()-[:s]->()等 列表的每个节点都属于一个用户(通过关系连接)。 我正在尝试创建个人用户历史记录(在为特定用户发生的所有事件之间添加:succeeds_for_user关系,这样
4回复

Neo4j-避免在密码的相同节点之间创建多个关系?

我想限制在现有节点之间已经创建的关系。 现在它被创建了多次? 有什么类似于'merge'的命令可以限制重复关系吗?谢谢任何建议
1回复

Neo4j-查找从未与其他节点有任何关系的节点

假设我有一个带有这样的节点和关系的示例: 我想找到从未与(:Node_C {label:'A'})有关系的Node_A所有节点。 我试过了: 但是我没有得到预期的结果。 如果我具有这些节点和关系,则不希望返回node_a 。 如何匹配从未与(:Node_C {
3回复

Neo4j-获取节点以及关系属性的集合

我有两个节点“成员”和“书”。 成员和图书通过“ ISSUED_TO”关系链接。 现在,在获取成员时,我可以使用“收集”获得发布给成员的所有书籍的列表。 我需要进一步扩展上述查询-我的“ ISSUED_TO”关系具有一个属性“ Issue_Date”。 我需要的是每个成员的图书清