gpt4 book ai didi

java - getRelationships 并不总是返回关系

转载 作者:行者123 更新时间:2023-12-02 04:14:08 25 4
gpt4 key购买 nike

根据我检索节点的方式,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com