尝试在特定关系 id

问题描述

我面临一个非常奇怪的问题,我正在调用一个函数 get_objects() 4 次并从返回的列中获取 max,项目 10172 应该是返回的最大值仍然存在于结果列表中,但它返回给我的不是最大值的另一个项目 9998。而对于使用另一个参数对同一函数的另外两次调用,它给了我正确的结果。

我已经在 Neo4j 浏览器中运行并测试了该语句,它给了我同样的问题,就像那个节点不存在一样,但是当我单独搜索应该作为最大值返回的那个节点 10172 时它确实存在于数据库中,但为什么它在最终结果中没有将我返回为最大值?

我还从 Neo4j 中提取了 CSV 文件,以仔细检查该特定节点的关系和存在。它存在。我哪里出错了?

我有一个数据存储在图形数据库中作为 4 类型的节点,它们与不同的 4 关系和关系 id 属性连接为 (1,2,3,4) In cypher查询我试图针对关系 paper id 获得最大 1。问题似乎存在于关系 1 和关系 4 调用中。但是我在数据库中重新检查了这些节点存在于这些特定关系下。

这是我迄今为止尝试过的。

def get_objects(x): 
    par = str(x)
    query = ''' MATCH (p)-[r]->(a) WHERE r.id = $par RETURN a.id '''
    resultNodes = session.run(query,par = par)
    df = DataFrame(resultNodes)

return df[0]

def find_max_1():
    authors,terms,venues,papers=0,0
    authors=get_objects(1).max()
    terms=get_objects(2).max()
    venues=get_objects(3).max()
    papers=get_objects(4).max()
    return authors,papers

def main():
    
    m = find_max_1()

    if __name__ == "__main__":
        
        main()

输出为:

[9998,14669,10190,9999]

预期输出

[10172,15648]

任何形式的帮助将不胜感激!

提前致谢。

解决方法

问题返回的结果是字符串类型,max() 正在计算 strings 而不是 int 之间的最大值。