如何访问Mongoid中的主节点> 3.0?
在Mongoid<你可以使用3.0:
Mongoid::Config.master.eval('...')
我在3中找到的最接近的似乎是:
klass.collection.database.command(eval: '...') #=> failed with error "not master"
有更好的方法可以访问master吗?或者确保主节点评估命令的方法是什么?
答案 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。