neo4j - 将gremlin查询转换为cypher的问题

时间:2013-06-26 23:16:30

标签: neo4j cypher gremlin neo4jclient

我一直在使用NEO4j数据库来处理最近的项目。

最近,我们注意到Cypher查询的运行速度比Gremlin快,所以我们决定转换查询。我们使用.Net图形客户端运行查询。

有一个Gremlin查询我无法转换为Cypher。

---- Gremlin(这可以生成Node(CustomerNode)的结果....应该是CustomerNode的括号,但编辑器不会接受它)

        var results2 = graphClient.RootNode
            .Out<ApplicationNode>("HasApplications")
            .OutE("HasCompanies")
            .InV<CompanyNode>(p => p.Id == companyId, StringComparison.Ordinal)
            .Out<ConfigurationRootNode>("HasConfigurationRoot")
            .Out<CustomerNode>("HasCustomers")
            .As<CustomerNode>("Customer")
            .OutE("HasConfigurationStatuses")
            .InV<ConfigurationStatusNode>(p => p.Status == configStatus, StringComparison.Ordinal)
            .OutE("HasOpportunities")
            .InV<OpportunityNode>(p => p.ConfigurationId == configurationId, StringComparison.Ordinal)
            .BackV<CustomerNode>("Customer");

        var testResults2 = results2.ToList();

-------- Cypher(见下文......这不起作用)

        var results = graphClient.Cypher.Start("root", "node(0)")
                                        .Match("(root)-[ha:HasApplications]->(Application)-[hs:HasCompanies]->Company-[hcr:HasConfigurationRoot]->(ConfigurationRoot)-[hc:HasCustomers]->(Customer)<-[hcs:HasConfigurationStatuses]-(ConfigurationStatus)<-[ho:HasOpportunities]-(Opportunity)")
                                        .Where<CompanyNode>(Company => Company.Id == companyId)
                                        .And().Where<ConfigurationStatusNode>(ConfigurationStatus => ConfigurationStatus.Status == configStatus)
                                        .And().Where<OpportunityNode>(Opportunity => Opportunity.ConfigurationId == configurationId);

        var x = results.Return<Node<CustomerNode>>("Customer").Results;

我的“匹配”属性可能无法正确设置?我根本无法从Cypher查询得到任何结果。这个与我的其他查询不同......这是唯一一个在Gremlin中执行BackV的人。

任何帮助将不胜感激!

谢谢! 帕特里克

0 个答案:

没有答案