1

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

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将我带到事件以继续我的链,但是如果我已经有一个包含事件数组的对象,这是否有效?

在我的示例中,我正在尝试使用地理编码器来拉近。

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

地理编码器可以做这样的事情

Venue.near([40.71, 100.23], 20)# 查找 20 英里内的所有 objs

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

例如

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

即使这可行,是否有另一种方法可以做到这一点?

4

1 回答 1

1

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

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

这将过滤该数组中用户的朋友的事件。我们可以使用neo_idinwhere以获得更好的性能。

于 2014-11-27T20:54:15.290 回答