objects multiple fields elemmatch array mongodb unix database nosql

multiple - mongodb find in array of objects



Está corriendo mongodb? (8)

He instalado mongodb y los controladores php en mi servidor Unix.

Mi pregunta es ¿cómo puedo saber si mongodb se está ejecutando? ¿Hay una consulta de línea de comando simple para verificar el estado? Si lo comienzo una vez desde el shell, seguirá funcionando si salgo del shell (este no parece ser el caso). ¿Cómo puedo hacer que la conexión de mongodb sea persistente y comenzar automáticamente el reinicio del servidor?

Puedo correr:

-bash-3.2 $ su
Contraseña:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6.5/bin/mongod --help para ayuda y opciones de inicio
Mié 23 feb 08:06:54 MongoDB comenzando: pid = 7271 puerto = 27017 dbpath = / data / db / 32-bit

** NOTA: cuando usa MongoDB 32 bit, está limitado a aproximadamente 2 gigabytes de datos
** ver http://blog.mongodb.org/post/137788967/32-bit-limitations

** ADVERTENCIA: Estás ejecutando OpenVZ. ¡Esto se sabe que está roto!

Mié 23 de feb. 08:06:54 db versión v1.6.5, versión de pdf 4.5
Mié 23 de febrero 08:06:54 versión de git: 0eb017e9b2828155a67c5612183337b89e12e291
Mié 23 feb 08:06:54 info sys: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen # 1 SMP vie
15 de febrero, 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Mié 23 feb 08:06:54 [initandlisten] esperando conexiones en el puerto 27017
Mié 23 de febrero 08:06:54 [websvr] interfaz de administración web escuchando en el puerto 28017

Si abro un caparazón separado, puedo conectarme a mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Versión de shell MongoDB: 1.6.5
conectando a: prueba
db.foo.find ()
{"_id": ObjectId ("4d63d7d3eb95985ab19c8feb"), "a": 1}

Sin embargo, si cierro el shell inicial, no me puedo conectar:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
Versión de shell MongoDB: 1.6.5
conectando a: prueba
Mié 23 de febrero 08:25:10 Error: no se pudo conectar al servidor 127.0.0.1 (anon): 1154
excepción: conexión fallida


Correcto, al cerrar el shell se detendrá MongoDB. Intenta usar la línea de comando --fork arg para el proceso mongod que hace que se ejecute como daemon en su lugar. No soy un gurú de Unix, pero estoy seguro de que debe haber una forma de que comience automáticamente cuando la máquina se inicie.

p.ej

mongod --fork --logpath /var/log/mongodb.log --logappend

Consulte la documentación completa sobre Inicio y detención de Mongo .


Encuentro:

ps -ax | grep mongo

Para ser mucho más consistente. El valor devuelto se puede usar para detectar cuántas instancias de mongod se están ejecutando


Para comprobar rápidamente si mongodb se está ejecutando, este truco nc rápido le hará saber.

nc -zvv localhost 27017

El comando anterior asume que lo está ejecutando en el puerto predeterminado en el host local.

Para iniciarlo automáticamente, es posible que desee ver este hilo .


Para verificar el estado de ejecución actual de mongodb use: sudo service mongodb status


Probablemente porque no cerré mi servidor de desarrollo correctamente o una razón similar. Para solucionarlo, quite el bloqueo e inicie el servidor con: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


Sé que esto es para php, pero llegué aquí buscando una solución para el nodo. Usando mongoskin:

mongodb.admin().ping(function(err) { if(err === null) // true - you got a conntion, congratulations else if(err.message.indexOf(''failed to connect'') !== -1) // false - database isn''t around else // actual error, do something about it })

Con otros controladores, puede intentar establecer una conexión y, si falla, sabrá que el servidor mongo está inactivo. Mongoskin necesita hacer una llamada (como ping) porque se conecta perezosamente. Para php, puede usar el método try-to-connect. ¡Haz un guion!

PHP:

$dbIsRunning = true try { $m = new MongoClient(''localhost:27017''); } catch($e) { $dbIsRunning = false }


Verifique con:

ps -edaf | grep mongo | grep -v grep # "ps" flags may differ on your OS

o

/etc/init.d/mongodb status # for MongoDB version < 2.6 /etc/init.d/mongod status # for MongoDB version >= 2.6

o

service mongod status

para ver si mongod se está ejecutando (debe ser root para hacer esto, o prefijar todo con sudo ). Tenga en cuenta que el comando ''grep'' siempre aparecerá también como un proceso separado.

verifique el archivo de registro /var/log/mongo/mongo.log para ver si hay algún problema reportado


esto debería funcionar bien ...

pgrep mongod