Azure cosmosdb 格雷明林遍历基础?过滤遍历结果

Azure cosmosdb 格雷明林遍历基础?过滤遍历结果,azure-cosmosdb,gremlin,Azure Cosmosdb,Gremlin,首先,如果这是重复的,很抱歉。我对使用Gremin非常陌生,目前正努力学习新的术语,无法找到我需要的,但可能是因为新的语言 我已经设置了一些非常基本的顶点和边,如果有什么东西存在,似乎可以遍历,但似乎无法解决如何在它们之间创建链接。例如,假设我有一个blog vertex,它有“post”3个post vertex。“跟随”博客并“阅读”其中2篇文章的用户顶点。我正在努力解决如何返回已读和未读的帖子 我可以遍历到用户跟随“g.V('edward').outE('follows').inV()”的

首先,如果这是重复的,很抱歉。我对使用Gremin非常陌生,目前正努力学习新的术语,无法找到我需要的,但可能是因为新的语言

我已经设置了一些非常基本的顶点和边,如果有什么东西存在,似乎可以遍历,但似乎无法解决如何在它们之间创建链接。例如,假设我有一个blog vertex,它有“post”3个post vertex。“跟随”博客并“阅读”其中2篇文章的用户顶点。我正在努力解决如何返回已读和未读的帖子

我可以遍历到用户跟随“g.V('edward').outE('follows').inV()”的博客,然后再遍历到博客“g.V('edward').outE('follows').inV().outE('posted').inV()”的帖子,但我如何将用户链接到这些帖子,以查看他们读过什么和没读过什么。然后我查看了如何获取read posts.inE('read').inV(),但遍历结果显示了所有已被读取的posts,而不管是谁读取的。我已经看过了。但似乎一直在来回移动,无法让它正常工作

所以我想我有两个问题,如何在上述情况下应用过滤器?那么,我该怎么说那些帖子对原始用户没有“阅读”功能呢

谢谢,我知道这可能有点复杂

--剧本--

以下是一种方法:

gremlin> g.V('edward').as('e').
......1>   out('follows').
......2>   out('posted').
......3>   not(where(__.in('read').as('e')))
==>v[post2]
==>v[post3]

它只需使用
where()
反向遍历任何帖子的“读取”边缘,并在“edward”(标记为“e”)是目标顶点时将其过滤掉。

当询问有关Gremlin的问题时,最好提供一个简单的Gremlin脚本,该脚本创建一些代表您试图查询的内容的示例数据-例如,请看:谢谢Stephen,现在添加
gremlin> g.V('edward').as('e').
......1>   out('follows').
......2>   out('posted').
......3>   not(where(__.in('read').as('e')))
==>v[post2]
==>v[post3]