Solución:
Crea un archivo /etc/mongorc.js
y añadir rs.slaveOk()
allí. El archivo se evalúa en cada inicio de shell.
Para obtener más información, eche un vistazo aquí.
Llamar a lo siguiente debería funcionar bien, no hay un tipo de retorno para el método, por lo que no se imprimirá nada en la pantalla
${MONGO_HOME}/bin/mongo --port ${MONGO_PORT2} --host ${MONGO_SECONDARY2} --eval "rs.slaveOk()"
Corriendo rs.slaveOk
en mongo.exe también se verá cómo se implementa, ya que es solo un método auxiliar:
> rs.slaveOk
function (value) { return db.getMongo().setSlaveOk(value); }
>
Y tambien el setSlaveOk
método:
> db.getMongo().setSlaveOk
function ( value ) {
if( value == undefined ) value = true;
this.slaveOk = value;
}
Siempre puede intentar consultar una de las colecciones en la secundaria para asegurarse de que el nodo sea consultable:
> db.test.findOne()
null
Actualizar – un poco más de claridad
Configuración slaveOk()
solo es válido para esa sesión de consola en la que se ejecutó, por lo que deberá pasar un script o permanecer conectado a la consola con el --shell
argumentos a favor del ejemplo
C:mongodbbin>mongo.exe --port 27012 --eval "rs.slaveOk()" --shell
MongoDB shell version: 3.0.5
connecting to: 127.0.0.1:27012/test
type "help" for help
rs1:SECONDARY> db.test.find()
{ "_id" : ObjectId("5630fdf2af4abd9f8ae7f79c"), "test" : true }
rs1:SECONDARY>
Si no pasamos en el rs.slaveOk()
el obtenemos la siguiente respuesta:
C:mongodbbin>mongo.exe --port 27012 --shell
MongoDB shell version: 3.0.5
connecting to: 127.0.0.1:27012/test
type "help" for help
rs1:SECONDARY> db.test.find()
Error: error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
rs1:SECONDARY> exit
bye