【问题标题】:Select a vertex if the edge to the vertex has a property value, otherwise choose another vertex with a different edge property value如果到顶点的边具有属性值,则选择一个顶点,否则选择另一个具有不同边属性值的顶点
【发布时间】:2019-11-06 22:35:35
【问题描述】:

我正在尝试获取将 Request 顶点连接到每个 Card 顶点的顶点。卡到请求的关系是一对多的(每张卡有很多请求)。

如果正在使用卡,则可以将卡连接到具有属性"Status": "In Use" 的请求。每张卡还将连接到具有属性"Status":"Future Use" 或"Past Use" 的许多请求。

我正在尝试创建一个表格来显示每张卡的最近使用情况。

因此,如果将它连接到卡的边缘具有属性"Status":"In Use",我想返回一个请求。

如果该卡当前未使用,我会查找最近使用该卡的请求("Status":"Past Use")。

如果该卡从未使用过,我会寻找即将使用该卡的最快请求 ("Status": "Future Use")。

我已经尝试使用coalesce:

.coalesce(
 select('request')
  .outE().hasLabel('AssignedTo}').has('Status', 'In Use'),
 select('request')
  .outE().hasLabel('AssignedTo').has('Status', 'Past Use').order().by('Timestamp', decr).limit(1),
 select('request')
  .outE().hasLabel('AssignedTo').has('Status', 'Future Use').order().by('Timestamp', incr).limit(1)
).as('status')

但这只会返回一条记录(In Use)。另一个版本:

.coalesce(
 select('card')
  .inE().hasLabel('AssignedTo}').has('Status', 'In Use'),
 select('card')
  .inE().hasLabel('AssignedTo').has('Status', 'Past Use').order().by('Timestamp', decr).limit(1),
 select('card')
  .inE().hasLabel('AssignedTo').has('Status', 'Future Use').order().by('Timestamp', incr).limit(1)
).as('status')

这仅返回两条记录(均在使用中)。

我不久前尝试过choose,但也无法正常工作(不记得到底发生了什么)。

预期:

取回具有属性"Status":"In Use"的边的单个顶点。

如果此边不存在,则获取具有属性"Status":"Past Use" 的边的最新顶点。

如果没有符合条件的边,则获取具有属性"Status":"Future Use" 的边的最快即将到来的顶点。

【问题讨论】:

    标签: c# gremlin azure-cosmosdb-gremlinapi


    【解决方案1】:

    我不确定您的查询出了什么问题,因为您没有完全发布它,但这应该可以:

    g.V().hasLabel("Card").as("c").coalesce(
        outE("assigned").has("status", "In Use"),
        outE("assigned").has("status", "Past Use").order().by("Timestamp", desc).limit(1),
        outE("assigned").has("status", "Future Use").order().by("Timestamp", asc).limit(1),
    ).as("s").inV().as("r")
    .select("c","s","r").by("name").by("status").by("name")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多