0

我的模式如下:从 B、C、D、E “购买”;A“知道”F;F从B、G、H“买”。

如何仅从 Gremlin 中的 A(买方)获得 B(买方认识的任何人共享的共同卖方)?

4

1 回答 1

0

在询问有关 Gremlin 的问题时,最好以脚本的形式包含一些示例数据,作为问题的一部分,如下所示:

g.addV().property(id, 'A').as('a').
  addV().property(id, 'B').as('b').
  addV().property(id, 'C').as('c').
  addV().property(id, 'D').as('d').
  addV().property(id, 'E').as('e').
  addV().property(id, 'F').as('f').
  addV().property(id, 'G').as('g').
  addV().property(id, 'H').as('h').
  addE('buysFrom').from('a').to('b').
  addE('buysFrom').from('a').to('c').
  addE('buysFrom').from('a').to('d').
  addE('buysFrom').from('a').to('e').
  addE('knows').from('a').to('f').
  addE('buysFrom').from('f').to('b').
  addE('buysFrom').from('f').to('g').
  addE('buysFrom').from('f').to('h').iterate()

我想你可以通过几种方式来解决这个问题,但以下是我立即想到的方式:

gremlin> g.V('A').as('a').out('buysFrom').
......1>   where(__.in('buysFrom').both('knows').as('a'))
==>v[B]

第一行找到“A”,然后找到他们从谁那里购买。第二行通过沿着“buysFrom”边缘返回来过滤那些“A”购买的人,以找到知道“A”的人。

上面的代码是 Groovy 语法,但我看到你用“gremlinpython”标记,所以它只需要一些小的调整就可以在 Python 中工作:

g.V('A').as_('a').out('buysFrom').
  where(__.in_('buysFrom').both('knows').as_('a'))
于 2020-11-02T11:51:22.000 回答