使用gremlin查询的正确结果

时间:2013-09-13 18:16:22

标签: neo4j cypher gremlin

在neo4j中我创建了2个节点作为CP和ANZ。我创建了两个边缘作为卖出和买入,然后该边缘的tx_amount属性分别为100和200.

cp - >卖 - > 100 - > ANZ

ANZ - >买 - > 200 - > CP

现在我想要卖家,买家,tx_amount。所以,如果我选择CP作为卖方。然后它应该打印如下:

==> [seller:CP, tx_amount:100, buyer:ANZ]
==> [seller:ANZ, tx_amount:200, buyer:CP]

在上面的结果中看到第一行返回有效输出和第二排的买方也是正确的。只有卖方第二排不是ANZ,它是CP的。那么,如何解决这个问题。

当前查询输出如下:

的gremlin> GV(0).outE()。inV.as( '卖方')。博特( '卖', '买入')为( 'tx_amount')。inV.as( '买方')。选择{it.name } {it.amount} {it.name}的.sort {它[2]}

        ==> [seller:CP, tx_amount:100, buyer:ANZ]
        ==> [seller:CP, tx_amount:200, buyer:CP]

1 个答案:

答案 0 :(得分:0)

我是通过将headCustomerName作为root放置然后在headCustomer和childcustomer之间定义child_rel来实现的。

g.V.has("headCustomerName","ABC Corp.").inE('child_rel').outV().as('buyer').outE('Sell_To').as('tx_amount').inV().as('seller')  \
      .select{it.customerName}{it.amount}{it.customerName}  
==>[buyer:CP, tx_amount:100, seller:ANZ]
==>[buyer:CP, tx_amount:200, seller:SS Tech]
==>[buyer:SAK Corp., tx_amount:400, Supplier:AB Infotech]
...

和,

g.V.has("headCustomerName","ABC Corp.").inE('child_rel').outV().as('seller').inE('Sell_To').as('tx_amount').outV().as('buyer')    \
      .select{it.customerName}{it.amount}{it.customerName}  
==>[seller:CP, tx_amount:1100, buyer:NEW Int]
==>[seller:CP, tx_amount:1300, buyer:Marry Gold]
==>[seller:SAK Corp., tx_amount:1006, buyer:LLI Corp.]
...

感谢。 :)