5

Mongoid > 3.0 でマスターノードにアクセスするにはどうすればよいですか?

Mongoid < 3.0 では、以下を使用できます。

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

私が3で見つけることができる最も近いものは次のようです:

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

マスターにアクセスするためのより良い方法はありますか? または、コマンドがマスターノードによって評価されるようにする方法はありますか?

4

1 に答える 1

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 などの他の可能なソリューションは、eval よりも推奨されることに注意してください。

于 2012-08-02T14:47:31.403 に答える