Недавно я экспериментирую с Neo4j. Мне нравится идея, но я сталкиваюсь с проблемой, с которой я никогда не сталкивался с реляционными базами данных.
Я хочу выполнить эти вставки, а затем вернуть их точно в порядке вставки.
Вставить элементы:
create(p1:Person {name:"Marc"})
create(p2:Person {name:"John"})
create(p3:Person {name:"Paul"})
create(p4:Person {name:"Steve"})
create(p5:Person {name:"Andrew"})
create(p6:Person {name:"Alice"})
create(p7:Person {name:"Bob"})
Пока их вернуть:
match(p:Person) return p order by id(p)
Я получаю элементы в следующем порядке:
Paul
Andrew
Marc
John
Steve
Alice
Bob
Замечу, что эти элементы не возвращаются в соответствии с порядком вставки запроса (через функцию id).
На самом деле идентификаторы моих элементов следующие:
Марк: 18221
Джон: 18222
Пол: 18208
Стив: 18223
Андрей: 18209
Алиса: 18224
Боб: 18225
Как работает функция Neo4j id? Я читал, что он генерирует автоинкрементный идентификатор, но кажется немного странным его механизм. Как вернуть элементы, соответствующие порядку вставки запроса? Я думал о создании атрибута метки времени для каждого узла, но я не думаю, что это лучший выбор