C# Neo4j等价物:选择节点A的前2000个,返回节点A及其相关节点

C# Neo4j等价物:选择节点A的前2000个,返回节点A及其相关节点,c#,sql-server,neo4j,cypher,C#,Sql Server,Neo4j,Cypher,请原谅我。我通常是一个潜伏者,它已经在我的一切,以实际注册一个帐户,并问这个问题。。。显然我找不出合适的词来给我所需要的答案 TL;DR-我需要使用参数查询给定节点类型上的数据库,将节点类型结果限制为2000,同时还包括相关节点,但不将它们限制为2000 首先,我会告诉大家我是如何走到这一步的,希望我首先走错了路 我已经编写了一个外汇交易程序,它位于关系数据库SQL Server之上。使用我的软件的客户机不断要求在多个表中的数据之间建立越来越困难的关系。我知道图形数据库和节点关系的设置方式似乎符

请原谅我。我通常是一个潜伏者,它已经在我的一切,以实际注册一个帐户,并问这个问题。。。显然我找不出合适的词来给我所需要的答案

TL;DR-我需要使用参数查询给定节点类型上的数据库,将节点类型结果限制为2000,同时还包括相关节点,但不将它们限制为2000

首先,我会告诉大家我是如何走到这一步的,希望我首先走错了路

我已经编写了一个外汇交易程序,它位于关系数据库SQL Server之上。使用我的软件的客户机不断要求在多个表中的数据之间建立越来越困难的关系。我知道图形数据库和节点关系的设置方式似乎符合我在程序中需要的结果,而不是SQL server提供给我的结果

我已经启动了一个试点计划,看看是否可以将原始软件从SQL server迁移到Neo4j。在SQL server中,我会有一个包含市场数据的表,第二个表包含来自市场数据的派生数据,这两个表之间有重复的数据,以便建立关系。这不是最好的方法,但我无法说服客户放弃这个重复的数据分类帐

我在Neo4j中将该数据建模为Bid节点和Ask节点。两个节点都包含市场数据。然后,这些节点被馈送到市场信息节点,该节点中包含派生数据。因此[Bid]->[Market Info]首先匹配所有MarketInfo节点,然后与每个MarketInfo节点匹配所有相邻节点

MATCH (a:MarketInfo {Pair: 'AUD/CAD'})
WITH a
ORDER BY a.EndTicksUTC DESC 
LIMIT 2000
MATCH (a)-[r]-(b) 
RETURN a, r, b 

看起来这里已经有了一个很好的答案,但在处理Cypher查询时,通常需要学习的一件事是,您不需要在单个匹配/WHERE/RETURN中同时执行所有操作。你可以把你的查询变得零碎,只限制你想限制的查询部分,然后继续其他的部分。我需要一段时间才能理解这种方式,但这确实奏效了。谢谢你抽出时间。
MATCH (a:MarketInfo {Pair: 'AUD/CAD'})
WITH a
ORDER BY a.EndTicksUTC DESC 
LIMIT 2000
MATCH (a)-[r]-(b) 
RETURN a, r, b