我对绘制db和gremlin非常陌生,并且我遇到了与其他人类似的问题,请参见this question,因为我正在尝试获取满足所选项目的所有条件的资源顶点。所以对于下图
以下是用于创建示例数据的脚本:
g.addV("Resource").property("name", "Resource1")
g.addV("Resource").property("name", "Resource2")
g.addV("Criteria").property("name", "Criteria1")
g.addV("Criteria").property("name", "Criteria2")
g.addV("Item").property("name", "Item1")
g.addV("Item").property("name", "Item2")
g.V().has("Resource", "name", "Resource1").addE("isOf").to(g.V().has("Criteria", "name", "Criteria1"))
g.V().has("Resource", "name", "Resource2").addE("isOf").to(g.V().has("Criteria", "name", "Criteria1"))
g.V().has("Resource", "name", "Resource2").addE("isOf").to(g.V().has("Criteria", "name", "Criteria2"))
g.V().has("Item", "name", "Item1").addE("needs").to(g.V().has("Criteria", "name", "Criteria1"))
g.V().has("Item", "name", "Item2").addE("needs").to(g.V().has("Criteria", "name", "Criteria1"))
g.V().has("Item", "name", "Item2").addE("needs").to(g.V().has("Criteria", "name", "Criteria2"))
当我尝试以下操作时,我会看到资源1和2,因为它正在查找与两个条件相关的所有资源,而我只希望与两个条件都匹配的资源(资源2)。
g.V()
.hasLabel('Item')
.has('name', 'Item2')
.outE('needs')
.inV()
.aggregate("x")
.inE('isOf')
.outV()
.dedup()
所以,如果我尝试以下操作,如所引用的问题所示。
g.V()
.hasLabel('Item')
.has('name', 'Item2')
.outE('needs')
.inV()
.aggregate("x")
.inE('isOf')
.outV()
.dedup()
.filter(
out("isOf")
.where(within("x"))
.count()
.where(eq("x"))
.by()
.by(count(local)))
.valueMap()
我得到以下异常,因为为另一个问题提供的答案在Azure CosmosDB图形数据库中不起作用,为it doesn't support the gremlin Filter statement。
提交查询失败:gV()。hasLabel('Item')。has('name','Item2')。outE('needs')。inV()。aggregate(“ x”)。inE( 'isOf')。outV()。dedup()。filter(out(“ isOf”)。where(within(“ x”))。count()。where(eq(“ x”))。by()。 by(count(local)))。valueMap():“脚本评估错误:\ r \ n \ nActivityId:d2eccb49-9ca5-4ac6-bfd7-b851d63662c9 \ nExceptionType:GraphCompileException \ nExceptionMessage:\ r \ n \ tGremlin查询编译错误:找不到任何方法'filter'@第1行,第113列。\ r \ n \ t1错误\ n源:Microsoft.Azure.Cosmos.Gremlin.Core \ n \ tGremlinRequestId:d2eccb49-9ca5-4ac6-bfd7 -b851d63662c9 \ n \ tContext:graphcompute \ n \ tScope:graphparse-translate-csharpexpressionbinding \ n \ tGraphInterOpStatusCode:QuerySyntaxError \ n \ tHResult:0x80131500 \ r \ n“
我想知道是否有一种方法可以解决MS在Azure CosmosDB(these)中提供的gremlin步骤。
答案 0 :(得分:2)
只需将filter
替换为where
。
该查询将同样起作用。