这是针对Neo4jrb的。
我想在我的列上设置筛选器。我可以搜索确切的日期/值,但我想知道如何找到一个范围内的所有日期/值。我在多个列上进行筛选,所以理想情况下我想坚持使用哈希
这适用于单值
@users = User.all
@users.where({created_at: some_date.to_i, age: some_value})
这适用于范围:
@users.as(:u).where("u.created_at >= {start_date} and u.created_at <= {end_date}")
.params(start_date: date1.to_i, end_date: date2.to_i)
我的问题是,过滤是动态的,在许多列上,有时会有一个范围,有时是现在。我只想动态设置一个散列,并将其提供给where
@users.where(filter_conditions)
我如何使用Neo4j做到这一点?
假设您指定了一个日期属性键数组及其所需范围:
[{key: "created_at", start: 123, end: 234},{key: "modified_at", start: 333, end: 333}]
在上面的例子中,created_at
属性的范围为[123...234]
,而modified_at
属性的范围是[333...333]
——这只是伪装成范围测试的非范围测试。
使用以下伪代码,您应该能够应用参数指定的所有日期比较:
@users.as(:u).where("ALL(x IN {data} WHERE u[x.key] >= x.start AND u[x.key] <= x.end)")
.params(data: ... an array like the one above ...)