我正在嘗試從 AWS Neptune DB 中檢索 Tree 層次結構。我正在使用以下查詢以 JSON 格式檢索資料
g.V().hasLabel(labelid.toLowerCase()).has("name", "Val oswalt").repeat(__.inE().outV()).emit()
.tree().by(__.valueMap("name")).toList();
這會以以下 json 格式回傳我的資料。
[
{
"{name=[Val oswalt]}": {
"{}": {
"{name=[Stan Polomoski]}": {
"{}": {
"{name=[MC Regan]}": {}
}
}
}
}
}
]
是否可以以正確的 json 格式或 Flare json 格式回傳資料,如下所示
{
"name": "Val oswalt",
"children": [
{
"name": "Stan Polomoski",
"children": [
{
"name": "MC Regan"
}
]
}
]
}
uj5u.com熱心網友回復:
很難使用 Gremlin 將tree()結果轉換為它提供的基本結構以外的任何內容,因為Tree使用 Gremlin 對回傳的結果進行后處理以遞回地將父/子對轉換為新的鍵/值對會為您的查詢添加大量不可讀的代碼。
String您的結果回傳的結果看起來像是Map您通過執行valueMap('name'). 除非您從不支持將值作為鍵的編程語言中使用 Gremlin,否則Map我希望您在那里獲得可以使用的實際Map物件。
綜上所述,根據您針對輸出的目標,您似乎可以通過執行以下操作來更接近該表單(而不會使您的 Gremlin 過于復雜):
g.V().hasLabel(labelid.toLowerCase()).
has("name", "Val oswalt").
repeat(__.in()).emit().
tree().
by("name")
這應該產生類似的東西:
{
"Val oswalt": [
{
"Stan Polomoski": [
{
"MC Regan": []
}
]
}
]
}
雖然輸出不完全相同,但它絕對更干凈并且意味著相同的結構。如果您只是必須具有您要求的結構,我強烈建議您通過使用我建議的修改后的查詢來保持您的 Gremlin 簡單,然后在您的應用程式中對結果進行后處理以獲得該結構。Gremlin 幾乎可以做任何事情,但即使出于學術目的,我也不認為撰寫該查詢是值得的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480124.html
上一篇:物件陣列的d3.max
