【发布时间】:2020-09-25 10:58:38
【问题描述】:
假设你有 2000 个人,他们可以选择喜欢某个人,这会在他们之间创造优势,例如 A 喜欢 B,现在这并不一定意味着 B 喜欢 A。我将如何编写一个 gremlin 查询来计算淘汰所有喜欢对方的人?那么 A 喜欢 B 而 B 喜欢 A 在哪里呢?
我一直在浏览互联网,找到了.both('likes'),但据我了解,这将吸引喜欢某人或拥有喜欢他们的人的每个人,而不是同时获得两者。
我也发现了这个
g.V().hasId('1234567').as('y').
out('likes').
where(__.in('likes').as('y'))
这适用于 1 人,但我不知道如何让它适用于多人。
对我来说,这似乎是一个足够简单的图形问题,但我似乎无法在线找到任何解决方案。从我一直在阅读的所有内容中,似乎可以推断出数据的结构应该是,如果 A 喜欢 B,那也意味着 B 喜欢 A。这是可以实现的,当您创建 A 喜欢 B 的边缘时,您可以检查是否B 已经喜欢 A,如果是这种情况,请插入一个特殊的边缘,类似于... A inRelationshipWith B
对此的查询将是g.V().both('inRelationshipWith'),这会使事情变得更容易。
这是数据结构的问题,我可能错误地使用了图形数据库,还是实际上有一种简单的方法来实现我想要的我缺少的东西?
【问题讨论】:
标签: graph gremlin amazon-neptune