2014-09-14 3 views
2

Я использую график общих соседей, но мне нужно только в результате Вершины должны быть возвращены, нет необходимости для фантазииGRAPH_COMMON_NEIGHBORS возвращает только обычных соседей без пути?

[ 
    {collection/1:{ 
    collection/2:[ 
    {_id:3 ...}, 
    {_id:7 ...} 
    ] 
    } 
] 

мне нужна только часть _id: 3 и _id: 7 не вернулся:

[ 
    {_id:3 ...}, 
    {_id:7 ...} 
] 

сейчас я пытаюсь сломать себе голову, как оценить это, так как это не список. Я НЕ МОЖЕТ ПЛАТЬСЯ. Есть ли скрытая функция или крючок для возврата только результирующих вершин? Или я должен сделать это вручную, используя два запроса GRAPH_NEIGHBORS, так как считаю, что он вообще работает и ограничивает второй запрос первым запросом?

ответ

1

OK окончательный запрос для возврата результатов в формате Я хочу:

FOR entry 
IN GRAPH_COMMON_NEIGHBORS('nodes', "node/137789480179", "node/137987398899", {direction: 'outbound'}, {direction: 'outbound'}) 
FOR a in ATTRIBUTES(entry) FOR b in ATTRIBUTES(entry[a]) RETURN entry[a][b] 

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

0

Причина структуры результатов заключается в том, что вы можете назвать ее примерами вместо одиночных вершин. В вашем случае, конечно, очевидно, какая пара вершин принадлежит соседям. Чтобы отсортировать результат, который вы можете сделать следующее:

FOR entry IN GRAPH_COMMON_NEIGHBORS("nodes", "node/137789480179", "node/137987398899",  {maxDepth : 2}, {maxDepth : 2}) LET X = entry["node/137789480179"]["node/137987398899"] FOR v  IN X SORT v.name DESC RETURN v 
+0

Я пробовал раньше как-то не удалось сортировкой получить работу, будет пытаться это снова, как только будет время, и, надеюсь, он будет работать, с другой стороны I решили пропустить SORT на стороне сервера, так как в наши дни это можно сделать на стороне клиента :) – Marius