我有以下 Neo4jClient 代码
var queryItem = _graphClient
.Cypher
.Start(new
{
n = Node.ByIndexLookup("myindex", "Name", sku),
})
.Match("p = n-[r:Relationship]->ci")
.With("ci , r")
.Return((ci, r) => new
{
N = ci.Node<Item>(),
R = r.As<RelationshipInstance<Payload>>()
})
.Limit(5)
.Results
.OrderByDescending(u => u.R.Data.Frequency);
查询执行正常,但结果未正确排序(即按降序排列)。这也是 Payload 类。
如果您发现我的代码有问题,请告诉我。 TIA。
您正在执行排序之后.Results
称呼。这意味着您是在 .NET 中执行此操作,而不是在 Neo4j 上执行。 Neo4j 返回任意 5 个结果,因为 Cypher 查询不包含排序指令。
将最后三行更改为:
.OrderByDescending("r.Frequency")
.Limit(5)
.Results;
作为一般调试技巧,Neo4jClient 做了两件事:
- 它可以帮助您使用流畅的界面构建 Cypher 查询。
- 它为您执行这些查询。这是一个相当愚蠢的过程:我们将文本发送到 Neo4j,它返回对象。
执行显然是有效的,因此您需要找出查询不同的原因。
- 阅读文档:http://hg.readify.net/neo4jclient/wiki/cypher(我们这样写是有原因的)
- 阅读该页面上的“调试”部分,它告诉您如何获取查询文本
- 将查询文本与您期望运行的内容进行比较
- 解决差异(或报告问题http://hg.readify.net/neo4jclient/issues/new如果是库错误)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)