Neo4j gem - 从数组对象查询

时间:2014-11-27 20:18:56

标签: ruby-on-rails arrays neo4j neo4j.rb

在我之前的例子中,我有了这个查询

current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)

current_user.friends.events让我接触到继续我的链的事件,但是如果我已经拥有一个包含一系列事件的对象,这是否有效?

在我的例子中,我试图使用地理编码器拉近距离。

所以我的用户和事件都是地理编码的。

Geocoder可以做这样的事情

Venue.near([40.71, 100.23], 20)#在20英里范围内找到所有objs

所以我基本上可以找到所有事件并将其存储在一个对象中。我现在可以使用neo4j查询来过滤该对象吗?

e.g。

array_object(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)

即使这样可行,还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

您无法在阵列上调用查询代理方法,因此只需获取这些事件的ID并相应地过滤匹配。

current_user.friends.events(:e).where(neo_id: array_object.map { |e| e.neo_id })

这将过滤用户朋友在该阵列中的事件。我们可以在neo_id中使用where以获得更好的效果。