2015-10-28 25 views
0

這是用於Neo4jrb的。Neo4j Rails - 如何根據日期範圍/號碼範圍進行過濾或查詢

我想在我的列上設置過濾器。我可以搜索確切的日期/值,但我想知道如何找到範圍內的所有日期/值。我過濾多個列,所以最好我想堅持到哈希

這適用於單個值

@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的?

+0

你如何在數據庫中存儲的最新信息? – MicTech

+0

@MicTech作爲日期時間 –

+0

我不確定Neo4jrd如何在Neo4j中存儲DateTime值。但是Neo4j不支持DateTime,你需要將DateTime轉換爲不同的格式。通常它應該是一個整數,DateTime應該表示爲UnixTime。 – MicTech

回答

-1

讓我們假設指定日期屬性鍵和它們的期望的範圍的數組:

[{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 ...) 
+0

這與我不想要的問題的解決方案几乎相同。我希望能夠通過''''where where(hash)'''來實現這一點,以便我可以動態地過濾。 –

+0

我的建議是讓你動態過濾的方法。參數用於動態修改靜態查詢,並以高性能的方式。 – cybersam