我有一个非常奇怪的问题。我有一个查询如下
var el = _client.Cypher.Match("(map:Map)-[ALSO_AS*0..4]-(alsoas:Map)")
.Where((MappingNode map) => map.Id == node.Id)
.Return((map, alsoas) => new
{
node = map.As<MappingNode>(),
related = alsoas.CollectAs<MappingNode>()
});
var query = el.Query;
var result = el.Results.SingleOrDefault();
return result == null ? null : result.related.ToList();
最终生成以下查询(来自el.Query的takem)
MATCH (map:Map)-[ALSO_AS*0..4]-(alsoas:Map)
WHERE (map.Id = "02E325025AMZZ")
RETURN map AS node, collect(alsoas) AS related
问题是当我在neo4j的本机命令行中在浏览器中运行查询时,我得到x个结果。当我在c#中运行相同的查询时,结果计数高出10倍。
c#(1个节点,〜3k相关) 数据库(1个节点,~300相关)
我错过了什么吗?
答案 0 :(得分:0)
对我跳出来的是,看起来你似乎想尝试匹配ALSO_AS
关系类型,但由于没有冒号,所以它将其解释为一个变量。应该是这样的:
[:ALSO_AS*0..4]
答案 1 :(得分:0)
所以我解决了这个问题。
public class Dummy {
public static void main(String[] args) {
String[] str = { "MSD" ,"EEE", "RSR", "OCL", "SMS","RTS" };
List<String> list = new ArrayList<>();
for (int j = 0; j < str.length; j++) {
String temp = "";
for (int i = j; i < str.length; i++) {
temp = temp + " " + str[i];
list.add(temp);
}
}
for (String string : list) {
System.out.println(string);
}
}
}
这是c#中的解决方案。我所缺少的是收集和适当的关系声明。