假设有两种型号:
a1 <- b1
a2 <- b1
a3 <- b2
a1 <- b2
以下节点和关系:
label: A
现在,我希望label: B
的所有节点都与vafs<-read.table(text="Sample1 Sample2 Identity
1 2 chr11-50-T
3 4 chr11-200-A", header=T)
vec <- c(50,100)
vafs$vec<- sapply(vafs$Identity, FUN=function(x)
ifelse(length(grep(pattern=paste(vec,collapse="|"), x))>0,1,0))
vafs$vec <- as.factor(vafs$vec)
ggplot(vafs, aes(x=Sample1, y=Sample2, label=Identity, col=vec),alpha=0.5)+geom_point()
的特定节点相关。
如何通过neo4jrb实现这一目标?
简单地说,我想要&#34;标记为A的所有节点都与节点b1和#34有关; (这可以扩展到多个节点,就像标签A的所有节点都与节点b1和b2有关)
答案 0 :(得分:0)
我就这样做了:
A.as(:a).B.where(name: [b1])
此处,对于多个b's
,只需发送所有必需b's
的数组。
请注意,此查询会为所有a's
提供连接到 数组中b's
的任何<{1}},这符合我的要求。如果您想要的内容能够提供与所有 a's
相关联的所有b's
,那么这一切都无法奏效。但是,如果有人遇到此类查询,请将其发布在评论中,我将在此帖中将其包含在内。
答案 1 :(得分:0)
您应该将:bs
关联添加到class B
。
class B
include Neo4j::ActiveNode
property :name, type: String
has_many :out, :bs, type: :HAS_B, model_class: :A
end
然后,在找到特定节点B后,您只需执行b.bs
即可。例如B.where(id: some_id).bs
。
如果你想找到与节点b1或b2有关系的标签A的所有节点,你可以这样做
A.all.branch { bs.as(:b).where("b.uuid IN [$b1_id, $b2_id]") }.params(b1_id: b1_id, b2_id: b2_id)
如果你想找到与节点b1和b2有关系的标签A的所有节点,你可以这样做
A.all.branch { bs.where(id: b1_id) }.branch { bs.where(id: b2_id) }