首页 > 解决方案 > 尝试在特定关系 id 下查找返回列的最大值时出现 Cypher 查询问题

问题描述

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

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

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

我有一个数据作为节点类型存储在图形数据库中4,它们与不同4的关系和关系id属性连接,(1,2,3,4)在密码查询中我试图获得最大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,0,0
    authors=get_objects(1).max()
    terms=get_objects(2).max()
    venues=get_objects(3).max()
    papers=get_objects(4).max()
    return authors,terms,venues,papers

def main():
    
    m = find_max_1()

    if __name__ == "__main__":
        
        main()

输出是:

[9998, 14669, 10190, 9999]

预期输出:

[10172, 14669, 10190, 15648]

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

提前致谢。

标签: pythonneo4jcyphergraph-databases

解决方案


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


推荐阅读