访问Mongoid 3主节点

时间:2012-07-23 23:38:53

标签: ruby-on-rails-3 mongoid

如何访问Mongoid中的主节点> 3.0?

在Mongoid<你可以使用3.0:

Mongoid::Config.master.eval('...')

我在3中找到的最接近的似乎是:

klass.collection.database.command(eval: '...') #=> failed with error "not master"

有更好的方法可以访问master吗?或者确保主节点评估命令的方法是什么?

1 个答案:

答案 0 :(得分:6)

Mongoid 3.0使用Moped而不是10gen驱动程序,所以请参阅Moped :: Cluster #with_primary

http://rubydoc.info/github/mongoid/moped/master/Moped/Cluster:with_primary

例如:

User.collection.database.session.cluster.with_primary do
  p User.collection.database.command(eval: 'function() { return 3+3; }')
  p User.collection.database.command(ping: 1)
end

输出:

{"retval"=>6.0, "ok"=>1.0}
{"ok"=>1.0}

请注意,建议使用其他可能的解决方案,例如group,aggregation和mapreduce。