Neo4j - Случайный порядок результатов запроса

Я не совсем уверен, что происходит внутри моего приложения, но мои запросы, похоже, не дают мне результатов в порядке создания. Недавно он перестроился без моего изменения кода, связанного с запросом. Тем не менее, я явно ЧТО-ТО сделал.

В какой-то момент я пытался записать свои rails c результаты в файл. Однако это была просто запись вывода запроса в файл. Я не думал, что это повлияет на запросы запросов...

Запросы были просто как

File.open('text.txt', 'w') do |f|
   User.all.each do |u|
      f.puts u.email
   end
end

Я думаю, что могу пересортировать одно из моих отношений, добавив property :created_at и отсортировав его по этой метке времени.

Но у меня нет возможности сделать это с моей ассоциацией вопросов и ответов, поскольку они сейчас не активны.

Это так называется

<% @event.event_questions.each do |q| %>

В приложении было создано 3 вопроса. Порядок, который он в итоге показал, был

2,1,3

Как запрос neo4j определяет порядок объектов? Что я мог сделать не так?


person Clam    schedule 02.02.2015    source источник


Ответы (1)


Я не думаю, что у neo4j есть способ определить дату/время создания узлов. Он хранит внутренний, постепенно сгенерированный числовой идентификатор, но эти идентификаторы могут быть повторно использованы при перезапуске сервера. Возможно, этот порядок изменился после перезапуска сервера. Я не уверен, возвращает ли neo4j узлы в любом порядке по умолчанию. Я предполагаю, что это не гарантирует порядок, если вы не укажете ORDER BY

Для упорядочения отношений без ActiveRel вы можете сделать:

@event.event_questions(:question, :rel).order('rel.created_at')
person Brian Underwood    schedule 02.02.2015
comment
Это верно. Дело даже не в том, что объекты обязательно упорядочены по идентификатору, я думаю, что это как-то связано с планом запроса, который используется для их поиска. В Neo4j 2.2.0 порядок объектов, возвращаемых из простого MATCH (u:User)-[:KNOWS]->(other:User) RETURN other, будет в порядке, противоположном тому, который вы получили бы из того же запроса в 2.1.x. - person subvertallchris; 02.02.2015
comment
Так что, судя по всему, единственный способ исправить это - я вынужден превратить свои вопросы и ответы в ActiveRel, а не в простую ассоциацию. - person Clam; 02.02.2015
comment
Я не думаю, что вам нужно использовать ActiveRel. Вы видели мой пример в ответе? - person Brian Underwood; 02.02.2015
comment
Нет, я работал в предположении, что вы определили его, потому что вам нужно что-то иметь, но гем действительно считает updated_at и created_at особенными (то есть он автоматически устанавливает их как DateTimes и обновляет их при необходимости, как ActiveRecord) . Итак, все, что вам нужно сделать, это определить property :created_at - person Brian Underwood; 04.02.2015
comment
дело в том, что даже если я определяю это в своем узле, например. event_questions, здесь не будет rel.created_at. по крайней мере, я не вижу ни одного, когда я запускаю свою визуальную базу данных, чтобы посмотреть на отношения - person Clam; 05.02.2015
comment
А, да, хорошая мысль. Для этого вам понадобится ActiveRel. Вы можете определить ассоциацию с ActiveRel для моделирования отношения, но я не знаю, что делает определение свойства created_at в модели ActiveRel. Я думаю, что мы обсуждали это некоторое время назад. Крис, ты помнишь? - person Brian Underwood; 05.02.2015
comment
только что понял, что нам даже не нужно упорядочивать по отношениям.. мы можем просто упорядочить по created_at для узлов - person Clam; 11.02.2015