1

在 neo4j 中,我创建了 2 个节点作为 CP 和 ANZ。我创建了两条边作为 Sell 和 Buy ,然后将该边的 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('seller').bothE('Sell','Buy').as('tx_amount').inV.as('buyer').select{it .name}{it.amount}{it.name}.sort{it[2]}

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

1 回答 1

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.]
...

谢谢。:)

于 2013-09-19T09:32:38.033 回答