Пусть мыКак я могу получить все ActiveRel между двумя ActiveNode в Neo4j ruby?
- Node:
User
name
: String
- Rel:
Transaction
amount
: Поплавок
Представление упрощенной транзакции, подобной биткойну, где Пользователь отправляет монеты другим пользователям. Сделка имеет свойство amount
, которое показывает, сколько монет вы отправляете на номер to_node
от from_node
.
Затем я хочу получить все транзакции (одно- или двунаправленно) между Алисой и Бобом. Как я могу это сделать?
# user.rb
has_many :out, :receivers, rel_class: :Transaction
has_many :in, :senders, rel_class: :Transaction
# Console
alice = User.find_by(name: "Alice")
bob = User.find_by(name: "Bob")
# I want to do something like this:
Transaction.between(from: alice, to: bob)
# or this:
alice.receivers.rel_where(to_node: bob)
Я был удивлен, что последнее неприемлемо. Он включает в себя bob
непосредственно в CYPHER.
Использование Neo4jrb v8.0.0
И теперь я заметил другое: вы можете получить все Rels 'rels' и только первый из' rel', например 'alice.receivers.match_to (bob) .rels'. Но это может быть устаревшим (особенно 'rel', см. [This] (https://github.com/neo4jrb/neo4j/issues/697)), поэтому не рекомендуется делать это – Todoroki
FYI вы можете передавать аргументы в ассоциацию с определите переменные node/rel, такие как: 'alice.receivers (: node_var,: rel_var)' –
@BrianUnderwood: О, спасибо, так что это способ сделать это ... Я посмотрел на [вопрос о добавлении Rel querying] (https://github.com/neo4jrb/neo4j/issues/697), но он пока еще не разработан (и он сказал, что это будет '.where (node_var:, rel_var:)' или 'where (node_var) ,отн (rel_var) '). Кроме того, он ничего не возвращает [при поиске в документе] (http://neo4jrb.readthedocs.io/en/8.0.x/search.html?q=node_var&check_keywords=yes&area=default#). – Todoroki