Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j-cypher和Ruby gem返回的结果存在意外差异_Neo4j_Cypher_Neo4j.rb - Fatal编程技术网

Neo4j-cypher和Ruby gem返回的结果存在意外差异

Neo4j-cypher和Ruby gem返回的结果存在意外差异,neo4j,cypher,neo4j.rb,Neo4j,Cypher,Neo4j.rb,我有两个节点,User和Thema(这是书籍的分类标准) 这是我与这件事有关的课程 用户: Thema: class Thema include Neo4j::ActiveNode property :code, type: String, constraint: :unique property :subject, type: String, constraint: :unique validates :code, presence: true valid

我有两个节点,User和Thema(这是书籍的分类标准)

这是我与这件事有关的课程

用户:

Thema:

class Thema
  include Neo4j::ActiveNode
  property :code,     type: String, constraint: :unique
  property :subject,  type: String, constraint: :unique

  validates :code,    presence: true
  validates :subject, presence: true

  has_many  :out, :qualifiers,  rel_class: :QualifiedBy
  has_many  :in,  :users,       rel_class: :QualifiedFor
end
符合以下条件:

class QualifiedFor
  include Neo4j::ActiveRel

  from_class :User
  to_class   :Thema

  property  :qualified_as,   type: String, default: 'Reader'

  validates               :qualified_as,  presence: true
  validates_inclusion_of  :qualified_as, :in => ['Academic', 'Author', 'Critic', 'Expert', 'Enthusiast', 'Publisher', 'Reader']
end
以下是我在rails控制台中运行的内容:

irb(main):021:0> u = User.create name: 'Levi'
 CYPHER 724ms CREATE (n:`User` {props}) RETURN ID(n) | {:props=>{:uuid=>"432a58ca-1759-4b1c-92f9-0cd719140598", :name=>"Levi", :created_at=>1446056265, :updated_at=>1446056265}}
=> #<User uuid: "432a58ca-1759-4b1c-92f9-0cd719140598", created_at: Wed, 28 Oct 2015 18:17:45 +0000, name: "Levi", updated_at: Wed, 28 Oct 2015 18:17:45 +0000>
irb(main):022:0> t = Thema.find_by(code: 'AVLP')
 CYPHER 126ms MATCH (n:`Thema`) WHERE (n.code = {n_code}) RETURN n LIMIT {limit_1} | {:n_code=>"AVLP", :limit_1=>1}
=> #<Thema uuid: nil, code: "AVLP", subject: "Popular music">
irb(main):023:0> t.users << u
 CYPHER 122ms MATCH start, end WHERE (ID(start) = {ID_start}) AND (ID(end) = {ID_end}) CREATE start<-[rel1:`QUALIFIED_FOR`]-end | {:ID_start=>131, :ID_end=>1969}
=> #<QueryProxy Thema#users CYPHER: "MATCH thema131 WHERE (ID(thema131) = {ID_thema131}) MATCH thema131<-[rel1:`QUALIFIED_FOR`]-(result_users:`User`)">
irb(main):024:0> t.users.count
 Thema#users 116ms MATCH thema131 WHERE (ID(thema131) = {ID_thema131}) MATCH thema131<-[rel1:`QUALIFIED_FOR`]-(result_users:`User`) RETURN count(result_users) AS result_users | {:ID_thema131=>131}
=> 1
irb(main):025:0> t.users.each_rel.first
 Thema#users 121ms MATCH thema131 WHERE (ID(thema131) = {ID_thema131}) MATCH thema131<-[rel1:`QUALIFIED_FOR`]-(result_users:`User`) RETURN rel1 | {:ID_thema131=>131}
 CYPHER 115ms MATCH n WHERE (ID(n) = {ID_n}) RETURN n | {:ID_n=>1969}
 CYPHER 116ms MATCH n WHERE (ID(n) = {ID_n}) RETURN n | {:ID_n=>131}
=> #<QualifiedFor (:User {uuid: "432a58ca-1759-4b1c-92f9-0cd719140598"})-[:QUALIFIED_FOR]->(:Thema {uuid: nil}) qualified_as: "Reader">
irb(main):030:0* t.users.each_rel.first.qualified_as
=> "Reader"
irb(main):021:0>u=User.create name:'Levi'
CYPHER 724ms CREATE(n:`User`{props})返回ID(n){:props=>{:uuid=>“432a58ca-1759-4b1c-92f9-0cd719140598”,:name=>“Levi”,:created_at=>1446056265,:updated_at=>1446056265}
=> #
irb(main):022:0>t=Thema.find_by(代码:“AVLP”)
CYPHER 126ms MATCH(n:`Thema`)其中(n.code={n_code})返回n LIMIT{LIMIT_1}{124;{:n_code=>“AVLP”,:LIMIT_1=>1}
=> #
irb(主要):023:0>t.users 1969}
=> #
irb(主):024:0>t.users.count
Thema#用户116ms匹配Themma131,其中(ID(Themma131)={ID#u Themma131})匹配Themma131131}
=> 1
irb(主):025:0>t.users.each_rel.first
Thema#用户121ms匹配Themma131,其中(ID(Themma131)={ID#u Themma131})匹配Themma131131}
CYPHER 115ms匹配n,其中(ID(n)={ID_n})返回n{:ID_n=>1969}
CYPHER 116ms匹配n,其中(ID(n)={ID_n})返回n{:ID_n=>131}
=>#(:Thema{uuid:nil})限定为:“读者”>
irb(主要):030:0*t.users.each_rel.first.qualified_as
=>“读卡器”
返回用户“Levi”作为Thema的“阅读器”

但是,当我尝试在cypher中查找用户“Levi”是否符合条件时,我得到了“qualified as”的空值,请参见下面的查询:

neo4j-sh (?)$ match (u:User{name:'Levi'})-[r:QUALIFIED_FOR]-(t:Thema) return u.name, t.code, t.subject, r, r.qualified_as;
+----------------------------------------------------------------------------+
| u.name | t.code | t.subject       | r                     | r.qualified_as |
+----------------------------------------------------------------------------+
| "Levi" | "AVLP" | "Popular music" | :QUALIFIED_FOR[608]{} | <null>         |
+----------------------------------------------------------------------------+
1 row
34 ms
neo4j sh(?)$match(u:User{name:'Levi})-[r:QUALIFIED_FOR]-(t:Thema)返回u.name,t.code,t.subject,r,r.QUALIFIED_as;
+----------------------------------------------------------------------------+
|u.name | t.code | t.subject | r | r.qualified|u as|
+----------------------------------------------------------------------------+
|“Levi”|“AVLP”|“流行音乐”|:符合[608]{}|
+----------------------------------------------------------------------------+
一排
34毫秒

这里怎么了?

是的,很抱歉


不幸的是,当您这样做时,
t.用户只是编辑了解决方案,说明了为什么目前这不起作用。
Neo4j
gem的主分支更改了要使用的行为
ActiveRel
如果指定为关联的
rel\u类型
。它应该是
6.0.0
neo4j-sh (?)$ match (u:User{name:'Levi'})-[r:QUALIFIED_FOR]-(t:Thema) return u.name, t.code, t.subject, r, r.qualified_as;
+----------------------------------------------------------------------------+
| u.name | t.code | t.subject       | r                     | r.qualified_as |
+----------------------------------------------------------------------------+
| "Levi" | "AVLP" | "Popular music" | :QUALIFIED_FOR[608]{} | <null>         |
+----------------------------------------------------------------------------+
1 row
34 ms
QualifiedFor.create(from_node: u, to_node: t)