如何通过Mongoid中的动态属性来订购文档

时间:2011-05-29 05:04:29

标签: mongodb mongoid

我使用Mongoid存储一系列地理编码列表。这些列表需要按价格和邻近度进行排序。每个列表的价格是数据库中的字段,而距离是每个用户唯一的动态属性。

class Listing
  include Mongoid::Document

  field :price

  def distance
    get_distance(current_user.location,coordinates)
  end
end

如何按距离对这些文件进行排序?我试过了@listing.desc(:distance)但是没有用。

1 个答案:

答案 0 :(得分:2)

简短(无益)答案是:你做不到。

Mongoid确实能够query based on 2d co-ordinates,然后你可以更新你的控制器来做这样的事情:

@listings = Listing.near(current_user.location)

我相信我会按照距离的顺序返回您的商家信息。

在旁注中,我注意到您的Listing模型指的是您的current_user对象,这有点打破了MVC架构,因为您的模型不应该对当前会话有任何了解。< / p>