Форматирование CosmosDB Gremlin Query - PullRequest
0 голосов
/ 24 февраля 2019

Я новичок в Gremlin и CosmosDB.Я следую инструкциям Tinkerpop и использую тестовый график TinkerFactory.createModern ().

enter image description here

Мне нужно вернутьобъект graphson похож на этот из 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')

То, что я действительно получаю, показано на рисунке ниже.Я надеялся получить однопользовательский объект с массивом известных объектов и программных объектов.

Если это возможно, объясните, пожалуйста, какие шаги необходимо предпринять, чтобы получить этот формат.

enter image description here

Надеюсь, мой вопросясно и спасибо всем, кто может помочь =)

1 Ответ

0 голосов
/ 25 февраля 2019

Вы должны использовать 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]]
...