私はmongodbクラスタに2つのシャードを持ち、それぞれ3つのノードの複製セットと3つのノードを持つconfigサーバークラスタを持っています。
すべてが離れて、私は$アウト演算子を使用して、集約パイプラインの末尾にコレクションを記述しようとしたときから順にあると思われる:
:
db.getCollection('restaurants').aggregate([
{$match : {$text : {$search : "steak"}}},
{$out : "steak_restaurants"}
])
これは、次のエラーが返されていますスクリプトを実行するailed。
Error: Assert: command failed: { "ok" : 0, "errmsg" : "listIndexes failed: { ok: 0.0, errmsg: \"not master and slaveOk=false\", code: 13435, codeName: \"NotMasterNoSlaveOk\" }", "code" : 18631, "codeName" : "Location18631" } : aggregate failed [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:16:14 [email protected]/mongo/shell/assert.js:370:5 [email protected]/mongo/shell/collection.js:1319:5 @(shell):1:1
Error: command failed: { "ok" : 0, "errmsg" : "listIndexes failed: { ok: 0.0, errmsg: \"not master and slaveOk=false\", code: 13435, codeName: \"NotMasterNoSlaveOk\" }", "code" : 18631, "codeName" : "Location18631" } : aggregate failed : [email protected]/mongo/shell/utils.js:25:13 [email protected]/mongo/shell/assert.js:16:14 [email protected]/mongo/shell/assert.js:370:5 [email protected]/mongo/shell/collection.js:1319:5 @(shell):1:1
mongoシェルはmongosルーターに接続されています。私がmongodに対して同じことを実行すると、これはうまく動作します。
エラーは、何らかの読書が二次から行われていることを示唆していますが、私は読書の好みを設定していないので、モンゴがプライマリを正しく解決すると思っていました。任意のアイデアや洞察力をしてください?
あなたの接続は確実ですか?どのように接続しているか、使用可能なノードを示すことができますか?エラーは実際にはあなたが実際にセカンダリノードに接続していることを示唆しており、プライマリに接続しているときは '$ out'を使うことだけが可能です。 –
Robo 3Tで実行した場合にのみ発生するように見えます。生のシェルを使って実行するとうまくいきます。 – Ellis