Neo4j Desktop和Enterprise之间的结果集不同

时间:2019-04-08 01:45:57

标签: neo4j neo4jclient

我遇到了一个奇怪的问题。我最初使用桌面版和.Net Core Web API开发了数据库和API。我写了一个搜索查询来根据相互关系找到节点:

var results = _client.Cypher
.Match("(n:Person {userId: {userId}})-[]->(ct:ConnectionType)<-[]-(other:Person)")
.Where("ct.key IN {ctQuery}")
.WithParams(new
{
    searchDto.userId,
    ctQuery = searchDto.connectionType
})
.ReturnDistinct((other) => new
{
    Profile = other.As<SearchResultsDto>()
}).Results;

在本地工作时,一切正常。但是,当我将API和数据库传输到Linux服务器时,返回的结果为空。

问题似乎与我使用的数据类型有关。连接的节点的“键”属性是整数。 ctQuery对象是一个int []。在桌面上时,一切正常。我打开浏览器并使用相同的查询,但连接到Enterprise Server时仍然没有任何结果。连接到桌面数据库后,我得到了结果。

如果将int []更改为字符串[],我就能得到结果。

企业内部是否存在防止查询int数组的设置?如果可以,可以更改吗? 我有很多查询都将使用该键,而我宁愿不要经常将字符串转换为ints然后再返回。

1 个答案:

答案 0 :(得分:1)

没有您所描述的设置。

在Enterprise Server中加载数据时,您可能错过了字符串到整数的转换。

您可以运行查询以将ConnectionType键的所有 String 值转换为 Integer

MATCH (n:ConnectionType)
SET n.key= toInt(n.key)