如何在Mongoid中使用"辅助"读取模式进行聚合?



如何使用secondary模式读取此聚合?下面是一个示例:

class User
  include Mongoid::Document
  field :name, type: String
  field :status, type: String
  field :balance, type: Float
end

User.collection.aggregate(
  {
    '$group' => {
      'status' => '$status',
      'total' => { '$sum' => '$balance' }
    }
  }
)

我相信我需要向此聚合添加一个选项{ read: :secondary }。但是我该怎么做呢?

如果我做一个简单的查询,我可以像这样添加{ read: :secondary }选项:

User.extras(read: :secondary)
=> #<Mongoid::Criteria
  selector: {}
  options:  {:read=>:secondary}
  class:    User
  embedded: false>

我正在使用Mongoid 4.0.2

(此User.extras(read: :secondary).collection.aggregate不起作用(

您可以将read: { mode: :secondary }作为第二个参数传递给aggregate。例如:

User.collection.aggregate(
  [
    {
      '$group' => {
      'status' => '$status',
      'total' => { '$sum' => '$balance' }
    }
  ],
  read: { mode: :secondary }
)

最新更新