Ruby on rails Neo4j Rails-如何根据日期范围/数字范围进行过滤或查询
这是针对Neo4jrb的 我想在我的列上设置过滤器。我可以搜索准确的日期/值,但我想知道如何找到某个范围内的所有日期/值。我正在对多个列进行筛选,因此理想情况下我希望使用哈希 这适用于单个值Ruby on rails Neo4j Rails-如何根据日期范围/数字范围进行过滤或查询,ruby-on-rails,neo4j,Ruby On Rails,Neo4j,这是针对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.create
@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)
如何使用Neo4j实现这一点?假设您指定了日期属性键数组及其所需范围:
[{key: "created_at", start: 123, end: 234},{key: "modified_at", start: 333, end: 333}]
在上面的示例中,在属性处创建的具有范围[123…234]
,而在
属性处修改的具有范围[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 ...)
@users.as(:u).where({data}中的所有(x),其中u[x.key]>=x.start和u[x.key]如何在数据库中存储日期信息?@MicTech作为DateTime我不确定Neo4jrd如何在Neo4j中存储DateTime值。但是Neo4j本身不支持DateTime,您需要将DateTime转换为不同的格式。通常它应该是一个整数,DateTime应该表示为UnixTime。@MicTech是的,我相信它存储为一个整数这是一个unixtime Int,与我不想要的问题中的解决方案几乎相同。我希望能够通过where(hash)
实现这一点,这样我就可以动态筛选。我建议的是一种动态筛选的方法。参数用于动态修改静态查询,并以一种高效的方式进行。
@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 ...)