我们最近切换到 JRuby on Rails 以便我们可以使用 Neo4j,尽管我们只触及了 Neo4j 的皮毛,但它已经非常棒了。也就是说,我只是在索引和查找方面遇到了一个相当棘手的问题。
我刚刚在我的用户模型的 created_at 字段和我的 Post 模型的 created_at 字段中添加了 ':index => :exact'(我的 Post 模型的 custom_date 字段上已经有一个索引):
class User < Neo4j::Rails::Model
property :created_at, :type => DateTime, :index => :exact
class Post < Neo4j::Rails::Model
property :created_at, :type => DateTime, :index => :exact
property :custom_date, :type => DateTime, :index => :exact
然后我进入 rails 控制台尝试了这段代码(我改编自文档):
User.find( :all, :created_at => 7.days.ago .. DateTime.now ).count
它返回 0,我知道不是这样的代码:
new_users = []
User.all.each{ |user| new_users << user if user.created_at > 7.days.ago }
new_users.count
返回 104。
同样,当我跑步时
Post.find( :all, :created_at => 7.days.ago .. DateTime.now ).count
我得到0,但是当我跑步时
Post.find( :all, :custom_date => 7.days.ago .. DateTime.now ).count
我得到 305。(帖子的 custom_date 最初设置为帖子的 created_at。)唯一的区别是当我们移植旧数据库时,我在 Post 模型的 custom_date 字段中设置了索引,而我只是将索引添加到created_at 字段。
这是我的问题:如何按 created_at 时间搜索我的用户和帖子?