格式化 CosmosDB Gremlin 查询
Formatting CosmosDB Gremlin Query
我是 Gremlin 和 CosmosDB 的新手。我一直在关注 tinkerpop 教程并使用 TinkerFactory.createModern() 测试图。
我正在寻找的是 return 一个来自 cosmosdb 的类似于此的图形对象。
{
"user": {
"name": "Marko",
"age": 29
},
"knows": [
{"name": "josh", "age": 32},
{"name": "vadas", "age": 27}
],
"created": [
{"name": "lop", "lang": "java"}
]
}
我的想法是尝试
g.V().has('name', 'marko').as('user').out('knows').as('knows').out('created').as('created').select('user', 'knows', 'created')
我真正得到的是下图。
我希望拥有单个用户对象,以及一系列已知对象和软件对象。
如果可能的话,您能否解释一下需要使用哪些步骤来获得这种格式。
希望我的问题很清楚,感谢任何可以提供帮助的人 =)
你应该使用 project()
:
gremlin> g.V().has('person','name','marko').
......1> project('user','knows','created').
......2> by(project('name','age').by('name').by('age')).
......3> by(out('knows').project('name','age').by('name').by('age')).
......4> by(out('created').project('name','lang').by('name').by('lang'))
==>[user:[name:marko,age:29],knows:[name:vadas,age:27],created:[name:lop,lang:java]]
该语法应该适用于 CosmosDB。在 TinkerPop 3.4.0 中,事情变得更好了,因为您可以更有效地使用 valueMap()
(但我认为 CosmosDB 在回答这个问题时不支持它):
gremlin> g.V().has('person','name','marko').
......1> project('user','knows','created').
......2> by(valueMap('name','age').by(unfold())).
......3> by(out('knows').valueMap('name','age').by(unfold())).
......4> by(out('created').valueMap('name','lang').by(unfold()))
==>[user:[name:marko,age:29],knows:[name:vadas,age:27],created:[name:lop,lang:java]]
我是 Gremlin 和 CosmosDB 的新手。我一直在关注 tinkerpop 教程并使用 TinkerFactory.createModern() 测试图。
我正在寻找的是 return 一个来自 cosmosdb 的类似于此的图形对象。
{
"user": {
"name": "Marko",
"age": 29
},
"knows": [
{"name": "josh", "age": 32},
{"name": "vadas", "age": 27}
],
"created": [
{"name": "lop", "lang": "java"}
]
}
我的想法是尝试
g.V().has('name', 'marko').as('user').out('knows').as('knows').out('created').as('created').select('user', 'knows', 'created')
我真正得到的是下图。 我希望拥有单个用户对象,以及一系列已知对象和软件对象。
如果可能的话,您能否解释一下需要使用哪些步骤来获得这种格式。
希望我的问题很清楚,感谢任何可以提供帮助的人 =)
你应该使用 project()
:
gremlin> g.V().has('person','name','marko').
......1> project('user','knows','created').
......2> by(project('name','age').by('name').by('age')).
......3> by(out('knows').project('name','age').by('name').by('age')).
......4> by(out('created').project('name','lang').by('name').by('lang'))
==>[user:[name:marko,age:29],knows:[name:vadas,age:27],created:[name:lop,lang:java]]
该语法应该适用于 CosmosDB。在 TinkerPop 3.4.0 中,事情变得更好了,因为您可以更有效地使用 valueMap()
(但我认为 CosmosDB 在回答这个问题时不支持它):
gremlin> g.V().has('person','name','marko').
......1> project('user','knows','created').
......2> by(valueMap('name','age').by(unfold())).
......3> by(out('knows').valueMap('name','age').by(unfold())).
......4> by(out('created').valueMap('name','lang').by(unfold()))
==>[user:[name:marko,age:29],knows:[name:vadas,age:27],created:[name:lop,lang:java]]