Как получить идентификатор вершины в Nebula Graph, указав значение одного из ее атрибутов
Я использую Nebula Graph для хранения графа из нескольких узлов. Например: у меня есть тег с именем Entity с одним именем атрибута, именованный вызов EDGE без атрибутов. Я вставил много вершин типа Entity, и между ними есть ребро вызова типа. Я хочу запросить у своего графа конкретную вершину. У меня есть только его имя, я не знаю id, под которым он был вставлен. Я прочитал руководство по ngql и рассмотрел использование оператора "Go from". Мне не удалось найти способ выполнить запрос, начиная со значения атрибута вершины. Кто-нибудь может мне в этом помочь?: Я хочу сделать это: найти идентификатор вершины с именем = "x".
1 ответ
CREATE {TAG | EDGE} INDEX [IF NOT EXISTS] <index_name> ON {<tag_name> | <edge_name>} (prop_name_list)
LOOKUP ON {<vertex_tag> | <edge_type>} WHERE <expression> [ AND | OR expression ...]) ] [YIELD <return_list>]
Например, в вашем случае, предположим, у вас есть тег сущности, есть два свойства в нем, имя и возраст. Если вы хотите узнать идентификатор вершины с именем Amber, запрос будет выглядеть следующим образом: Сначала вы создаете индекс для объекта:
CREATE TAG entity(name string, age int);
CREATE TAG INDEX entity_index ON entity(name, age);
INSERT VERTEX entity(name, age) VALUES 101:("Amber", 21);
LOOKUP ON entity WHERE entity.name == "Amber";
============
| VertexID |
============
| 101 |
------------
Если вы не укажете ключевое слово YIELD, по умолчанию возвращается идентификатор вершины. Дайте мне знать, если это поможет.
Заметка:
- Сначала создайте тег, затем index. (Поскольку индекс восстановления не поддерживается прямо сейчас.)
- Вы вставляете данные после создания индекса.