从ArangoDB中的嵌套文档中获取特定密钥
我在ArangoDB中有四个文件Alpha、Alpha1、Alpha2和Alpha3。我想在单个查询中从每个文档中获取与键“MNO”相关的数据。(从交叉发布) 如果我理解正确,您希望检索任意深度的所有属性值,属性键为“MNO” 没有以某种方式展平对象的函数,在AQL中递归是不可能的 如果它总是处于相同的嵌套级别(如果存在),那么就有可能进行硬编码从ArangoDB中的嵌套文档中获取特定密钥,arangodb,Arangodb,我在ArangoDB中有四个文件Alpha、Alpha1、Alpha2和Alpha3。我想在单个查询中从每个文档中获取与键“MNO”相关的数据。(从交叉发布) 如果我理解正确,您希望检索任意深度的所有属性值,属性键为“MNO” 没有以某种方式展平对象的函数,在AQL中递归是不可能的 如果它总是处于相同的嵌套级别(如果存在),那么就有可能进行硬编码 "Alpha": {"ABC": {"DEF": {"2017": {"GHI JKL"
"Alpha":
{"ABC":
{"DEF":
{"2017":
{"GHI JKL":
{"MNO":
["ABCDEFGHIJKLMNOP"]}},
{"TGY BUG":
{"MNO":
["1234567891012456"]}}}}}
"Alpha1":
{"XYZ":
{"TUW":
{"2014":
{"QRS PQR":
{"MNO":
["ZYXWUTSRQPONML"]}}}}}
"Alpha2":
{"KJM":
{"LKI":
{"2005":
{"MNO":
["POLKIKJUMNHY"]}}}
"Alpha3":
{"WWW":
{"CCC DDD":
{"2011":
{"MNO":
{"POLKIKJUMNHY":"value"}}}}}
我尝试了下面这样的方法,但无法让它从不同的级别选择“MNO”属性。也许有一个逻辑上的缺陷,你可以解决
LET doc = {
"_id": "remove-me",
"Alpha": {
"ABC": {
"DEF": {
"2017": {
"GHI JKL": {
"MNO": ["ABCDEFGHIJKLMNOP"],
"PQR": true
},
"TGY BUG": {
"MNO": ["1234567891012456"],
"WXY": 987
}
}
}
}
}
}
FOR a1 IN ATTRIBUTES(doc, true)
FOR a2 IN ATTRIBUTES(doc[a1], true) || []
FOR a3 IN ATTRIBUTES(doc[a1][a2], true) || []
FOR a4 IN ATTRIBUTES(doc[a1][a2][a3], true) || []
FOR a5 IN ATTRIBUTES(doc[a1][a2][a3][a4], true) || []
FOR a6 IN ATTRIBUTES(doc[a1][a2][a3][a4][a5], true) || []
FILTER a6 == "MNO"
RETURN doc[a1][a2][a3][a4][a5]["MNO"]
// --or-- if you want to return an object {"MNO": value} for each match
//RETURN KEEP(doc[a1][a2][a3][a4][a5], "MNO")
(交叉柱从)
如果我理解正确,您希望检索任意深度的所有属性值,属性键为“MNO”
没有以某种方式展平对象的函数,在AQL中递归是不可能的
如果它总是处于相同的嵌套级别(如果存在),那么就有可能进行硬编码
"Alpha":
{"ABC":
{"DEF":
{"2017":
{"GHI JKL":
{"MNO":
["ABCDEFGHIJKLMNOP"]}},
{"TGY BUG":
{"MNO":
["1234567891012456"]}}}}}
"Alpha1":
{"XYZ":
{"TUW":
{"2014":
{"QRS PQR":
{"MNO":
["ZYXWUTSRQPONML"]}}}}}
"Alpha2":
{"KJM":
{"LKI":
{"2005":
{"MNO":
["POLKIKJUMNHY"]}}}
"Alpha3":
{"WWW":
{"CCC DDD":
{"2011":
{"MNO":
{"POLKIKJUMNHY":"value"}}}}}
我尝试了下面这样的方法,但无法让它从不同的级别选择“MNO”属性。也许有一个逻辑上的缺陷,你可以解决
LET doc = {
"_id": "remove-me",
"Alpha": {
"ABC": {
"DEF": {
"2017": {
"GHI JKL": {
"MNO": ["ABCDEFGHIJKLMNOP"],
"PQR": true
},
"TGY BUG": {
"MNO": ["1234567891012456"],
"WXY": 987
}
}
}
}
}
}
FOR a1 IN ATTRIBUTES(doc, true)
FOR a2 IN ATTRIBUTES(doc[a1], true) || []
FOR a3 IN ATTRIBUTES(doc[a1][a2], true) || []
FOR a4 IN ATTRIBUTES(doc[a1][a2][a3], true) || []
FOR a5 IN ATTRIBUTES(doc[a1][a2][a3][a4], true) || []
FOR a6 IN ATTRIBUTES(doc[a1][a2][a3][a4][a5], true) || []
FILTER a6 == "MNO"
RETURN doc[a1][a2][a3][a4][a5]["MNO"]
// --or-- if you want to return an object {"MNO": value} for each match
//RETURN KEEP(doc[a1][a2][a3][a4][a5], "MNO")
上述结构的嵌套无效。您能提供一个正确嵌套的示例吗?上述结构的嵌套无效。您能否提供一个正确嵌套的示例?