Я не могу заставить Neo4j добавить уникальную связь. Я использую neo4j 2.0.0.M6 и REST API. Я использую этот URL-адрес: /db/data/index/relationship/rels?uniqueness=get_or_create, и я все время получаю «плохой запрос». Я следую это руководство по API.
Что я делаю неправильно? Должен ли я передать имя индекса или ключ отношения? Я отправляю json с тремя ключами — «начало», «конец», «тип». Сообщение об ошибке говорит о том, что у меня отсутствуют необходимые ключи: [значение, ключ] - что мне туда вставить?
Как использовать уникальные отношения в Neo4j через REST API?
Ответы:
Я понимаю ваше замешательство.
Эта конечная точка API выполняет две функции. 1. Это создание отношений. 2. Он добавляет его в индекс, если он еще не существует.
Индекс имеет имя, ключ и значение.
Поэтому, если у меня есть индекс с именем «Люди», я мог бы захотеть индексировать «Имя» и «Дата рождения», которые являются ключами. Значения могут быть «LameCoder» и «11/11/2013» соответственно.
Используемый вами URL-адрес неявно говорит, что имя индекса — «rels», потому что для этого предназначена эта часть URL-адреса.
Это пример из документации. Ключ и значение — это то, что будет добавлено в индекс. Они не обязательно должны существовать в карте свойств отношения. Итак, в этом случае ниже ключом является имя, а значением является Питер. Таким образом, он гарантирует, что при создании отношения в индексе «rels» не существует другой записи индекса для ключа «имя» со значением «Питер».
{
"key" : "name",
"value" : "Peter",
"start" : "http://localhost:7474/db/data/node/444",
"end" : "http://localhost:7474/db/data/node/445",
"type" : "KNOWS"
}
Это не создает уникальную связь между этими двумя узлами. Это уникальная связь в индексе. Поэтому, если вы ожидаете, что это гарантирует, что между двумя узлами существует только одно отношение типа, это не то, что вам нужно.