gpt4 book ai didi

azure-cosmosdb - 如何将树格式的 Gremlin GraphSON 转换为 CosmosDB 中的自定义 JSON 树格式?

转载 作者:行者123 更新时间:2023-12-03 19:27:35 24 4
gpt4 key购买 nike

我有以下 Gremlin 查询在 CosmosDB 中成功运行:

g.addV('person').property(id, 'grand_father').property('name', 'Grand Father')
g.addV('person').property(id, 'father').property('name', 'Father')
g.addV('person').property(id, 'child').property('name', 'Child')
g.V('grand_father').addE('father_of').to(V('father'))
g.V('father').addE('father_of').to(V('child'))

我运行了查询 g.V('grand_father').repeat(out()).emit().tree()生成以下输出:
[
{
"grand_father": {
"key": {
"id": "grand_father",
"label": "person",
"type": "vertex",
"properties": {
"name": [
{
"id": "2b687c65-6490-4846-a5ef-1b7d67e51916",
"value": "Grand Father"
}
]
}
},
"value": {
"father": {
"key": {
"id": "father",
"label": "person",
"type": "vertex",
"properties": {
"name": [
{
"id": "c1f75463-8aa5-4c15-854d-88be0ec9cdc9",
"value": "Father"
}
]
}
},
"value": {
"child": {
"key": {
"id": "child",
"label": "person",
"type": "vertex",
"properties": {
"name": [
{
"id": "d74d6286-5fa9-4b90-9619-1f173d5da53e",
"value": "Child"
}
]
}
},
"value": {}
}
}
}
}
}
}
]

我想再次转换上面的GraphSON树以生成以下格式的自定义层次树。
{
"person":{
"name":"Grand Father"
},
"children":[
{
"person":{
"name":"Father"
},
"children":[
{
"person":{
"name":"Child"
}
}
]
}
]
}

我需要对 g.V('grand_father').repeat(out()).emit().tree() 做哪些更改达到结果?

最佳答案

我认为以下内容与您的要求非常接近:

gremlin> g.V('grand_father').
......1> repeat(out()).
......2> emit().
......3> tree().
......4> by(group().
......5> by(label).
......6> by(valueMap('name').by(unfold())).
......7> unfold().unfold())
==>[person={name=Grand Father}:[person={name=Father}:[person={name=Child}:[]]]]

请注意 tree()需要一个 by()调制器将给定的匿名遍历作为参数应用于树的每个项目。我没有在您的 JSON 输出中捕获“子级”叶子,但也许这可以让您足够接近目标,而不会引入更多复杂性。请注意,CosmosDB 可能尚不支持 valueMap('name').by(unfold())在这种情况下,您可以删除 by(unfold()) 的技巧并留下 List包装值,将其替换为 project('name').by('name') ,或者用“旧”的方式来展开 valueMap()下图:
gremlin> g.V('grand_father').
......1> repeat(out()).
......2> emit().
......3> tree().
......4> by(group().
......5> by(label).
......6> by(valueMap('name').
......7> unfold().
......8> group().
......9> by(select(keys)).
.....10> by(select(values).unfold())).
.....11> unfold().unfold())
==>[person={name=Grand Father}:[person={name=Father}:[person={name=Child}:[]]]]

关于azure-cosmosdb - 如何将树格式的 Gremlin GraphSON 转换为 CosmosDB 中的自定义 JSON 树格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com