Как получить идентификатор вершины в 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, по умолчанию возвращается идентификатор вершины. Дайте мне знать, если это поможет.

Заметка:

  1. Сначала создайте тег, затем index. (Поскольку индекс восстановления не поддерживается прямо сейчас.)
  2. Вы вставляете данные после создания индекса.
Другие вопросы по тегам