0

在 ROR 和 mongoid 作为映射器中,我在模型中遇到了这个类:

class StockPrice
 include Mongoid::Document
 include Mongoid::Timestamps

 field :stock_id, type: String
 field :price, type: Float

 index :stock_id => +1, :updated_at => -1

 def self.price(stock_id)
   where(stock_id: stock_id).desc(:updated_at).first.price
 end
def self.crawl(stock_id)
# I am stock price from internet using a web crawler
end
end

作为 mongodb 的新手,我有以下疑惑:
1)索引主要用于什么?
2)这一行在代码中传达了什么:
where(stock_id: stock_id).desc(:updated_at).first.price

4

1 回答 1

1

索引在 MongoDB 中的使用与任何其他数据库相同——它允许快速访问数据记录以及排序。对于任何相当大的 MongoDB 数据库(并且 MongoDB 数据库可以是 HUMONGOUS),索引对于良好的性能至关重要。

任何好的 MongoDB 参考都将解决索引问题。

+1 和 -1 指的是索引中字段值的方向。因此,updated_at 在索引中是递减的

where... 行规定该方法将返回与传入的 stock_id 匹配的第一条记录。匹配 stock_id 的记录在 updated_at 上按降序排序,因此该函数将返回最新的 updated_at 值。请注意,首先在 stock_id 上定义的索引,然后按降序在 updated_at 上定义的索引进行了优化,以便能够尽快返回该值。

于 2013-08-17T06:49:25.753 回答