Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Neo4j Rails-如何根据日期范围/数字范围进行过滤或查询_Ruby On Rails_Neo4j - Fatal编程技术网

Ruby on rails Neo4j Rails-如何根据日期范围/数字范围进行过滤或查询

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

这是针对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)

如何使用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 ...)