java - getRelationships 并不总是返回关系

标签 java neo4j

根据我检索节点的方式,getRelationships方法将返回所有关系(预期)或不返回任何关系(错误)。

Neo4j 版本 2.2.6。使用Java API。

:schema

Indexes
  ON :Lot(lot_id) ONLINE  
  ON :Lot(system) ONLINE  

No constraints

lot_id 始终是唯一的。
系统只有大约 3 个唯一值,并非所有批处理都有系统属性。

返回关系的方法:

  • ResourceIterator<Node> r = graphDb.findNodes(LabelTypes.Lot, "lot_id", lot);

  • Map<String,Object> parms = new HashMap<String,Object>(); parms.put("lots", lots); Result r = graphDb.execute("MATCH (n:Lot) WHERE n.lot_id in {lots} return n;", parms);

不返回关系的方法:

  • ResourceIterator<Node> r = graphDb.findNodes(LabelTypes.Lot, "system", system);
  • Map<String,Object> parms = new HashMap<String,Object>(); parms.put("lotSystem", system); Result r = graphDb.execute("MATCH (n:Lot) WHERE n.system = {lotSystem} return n;", parms);

这种模式似乎是,如果我在 lot_id 上查询,我会得到关系,如果我在系统上查询,我不会得到任何关系。但不知道为什么。

来自 Neo4j GUI 的一些附加信息:

如果我运行此查询:match (n:Lot) where n.system="SAMPLE" return n limit 1;然后我得到了我的单个批处理,但是如果我在 GUI 中双击它,什么也不会发生,也不会显示任何关系。

Graph 1

如果我复制此节点的 lot_id 并仅针对该节点运行查询,则当我双击该节点时,关系会恢复:match (n:Lot) where n.lot_id="someLotId" return n limit 1;

enter image description here

最佳答案

我猜您的数据集中有问题。

确保lot_idsystem返回的节点确实是相同的节点。 可能由于导入问题,您的数据集已损坏。

待办事项列表: - 对数据集使用约束 - 使用merge,确保数据库中有单个节点

关于java - getRelationships 并不总是返回关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33502839/

相关文章:

java - 尝试从 SwingWorker done() 方法绘制 JPanel 什么都不做

java - 如何在不使用 IDE 的情况下在 Java 中包含库

java - Jooq批量记录插入

java - 在 Neo4j 的数据成员中保留元素的插入顺序

neo4j - 使用 Cypher 和 Neo4j 进行邻居、重复和聚合

neo4j - 社交网络图数据库和个人资料信息

javascript - Django 使用前端 python 类中的函数?

java - 多个文件上传到 Box 失败,出现 HTTP 客户端错误 "connection still allocated"

java - Android Lunar Lander 线程处理替代方案

java - 通过java获取neo4j中具有相同索引值的所有节点?