【发布时间】:2020-11-10 23:47:31
【问题描述】:
我在 cosmos DB gremlin API 中设置了我的数据。我正在尝试编写一个可以从给定顶点开始的查询,为所有边提供两个方向的标签和属性,以及顶点及其属性,循环计数为 2。我正在运行以下查询。
要设置的数据
g.addV('item').property('id','1').property('name', 'item1')
g.addV('item').property('id','2').property('name', 'item2')
g.addV('item').property('id','3').property('name', 'item3')
g.addV('item').property('id','4').property('name', 'item4')
g.addV('item').property('id','5').property('name', 'item5')
g.addV('item').property('id','6').property('name', 'item6')
g.addV('item').property('id','7').property('name', 'item7')
g.addV('report').property('id','8').property('name', 'report1')
g.addV('report').property('id','9').property('name', 'report2')
g.addV('folder').property('id','10').property('name', 'folder1')
g.addV('server').property('id','11').property('name', 'server1')
g.V('1').addE('hasParent').to(g.V('2'))
g.V('1').addE('hasParent').to(g.V('3'))
g.V('2').addE('hasParent').to(g.V('4'))
g.V('5').addE('hasParent').to(g.V('6'))
g.V('4').addE('hasParent').to(g.V('5'))
g.V('7').addE('hasParent').to(g.V('5'))
g.V('8').addE('hasParent').to(g.V('9'))
g.V('8').addE('hasParent').to(g.V('9'))
g.V('8').addE('belongsTo').to(g.V('10'))
g.V('10').addE('belongsTo').to(g.V('11'))
查询:g.V('id','1').repeat(bothE().dedup().otherV()).times(2).path()
回复:
[
{
"labels": [
[],
[],
[],
[],
[]
],
"objects": [
{
"id": "1",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "1|name",
"value": "item1"
}
]
}
},
{
"id": "a6b02073-68f8-4d53-8af0-54739eaaeaa0",
"label": "hasParent",
"type": "edge",
"inVLabel": "item",
"outVLabel": "item",
"inV": "2",
"outV": "1"
},
{
"id": "2",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "2|name",
"value": "item2"
}
]
}
},
{
"id": "c8722748-3899-4a2c-afe4-6f13b6c1f8d5",
"label": "hasParent",
"type": "edge",
"inVLabel": "item",
"outVLabel": "item",
"inV": "4",
"outV": "2"
},
{
"id": "4",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "4|name",
"value": "item4"
}
]
}
}
]
},
{
"labels": [
[],
[],
[],
[],
[]
],
"objects": [
{
"id": "1",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "1|name",
"value": "item1"
}
]
}
},
{
"id": "a6b02073-68f8-4d53-8af0-54739eaaeaa0",
"label": "hasParent",
"type": "edge",
"inVLabel": "item",
"outVLabel": "item",
"inV": "2",
"outV": "1"
},
{
"id": "2",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "2|name",
"value": "item2"
}
]
}
},
{
"id": "a6b02073-68f8-4d53-8af0-54739eaaeaa0",
"label": "hasParent",
"type": "edge",
"inVLabel": "item",
"outVLabel": "item",
"inV": "2",
"outV": "1"
},
{
"id": "1",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "1|name",
"value": "item1"
}
]
}
}
]
},
{
"labels": [
[],
[],
[],
[],
[]
],
"objects": [
{
"id": "1",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "1|name",
"value": "item1"
}
]
}
},
{
"id": "2f0c5890-3fa5-4d7d-8ada-910e5419750f",
"label": "hasParent",
"type": "edge",
"inVLabel": "item",
"outVLabel": "item",
"inV": "3",
"outV": "1"
},
{
"id": "3",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "3|name",
"value": "item3"
}
]
}
},
{
"id": "2f0c5890-3fa5-4d7d-8ada-910e5419750f",
"label": "hasParent",
"type": "edge",
"inVLabel": "item",
"outVLabel": "item",
"inV": "3",
"outV": "1"
},
{
"id": "1",
"label": "item",
"type": "vertex",
"properties": {
"name": [
{
"id": "1|name",
"value": "item1"
}
]
}
}
]
}
]
这给了我想要的输出,但有很多重复,我猜是因为它会在遍历时打印路径。如何修改此查询以返回尽可能小的 json 输出?只需返回一次顶点和边。如果这有什么不同,我正在使用 cosmosDB gremlin API。
需要响应:只是绘制此图所需的顶点和边的列表。
【问题讨论】:
标签: azure-cosmosdb gremlin tinkerpop3 azure-cosmosdb-gremlinapi