2012-08-23 8 views
6

He ejecutado un comando en mongo.exe. Probemos con el comando más básico.¿Cómo ejecutar shell alguna consulta en Rockmongo o mongovue?

> db.tablebusiness.find({"_id": "the-simmons-paradise__41.85_-87.88"}); 

me dieron los resultados:

Ahora trato de comandos similar en rockmongo. Si ejecuto

db.tablebusiness.find(
    {"_id": "the-simmons-paradise__41.85_-87.88"} 
    ); 

Resultado:

{ 
    "retval": null, 
    "ok": 1 
} 

Básicamente me parece decir que el resultado es bueno o algo por el estilo? No estoy seguro.

Si elaboro:

var cur = db.tablebusiness.find(
{"_id": "the-simmons-paradise__41.85_-87.88"} 
); 
cur.forEach(function(x){print(tojson(x))}); 

Resultado:

{ 
    "retval": null, 
    "ok": 1 
} 

mismo problema.

Si hago:

function() { 
    return db.tablebusiness.find({"_id": "the-simmons-paradise__41.85_-87.88"}); 
} 

llegué:

{ 
    "retval": { 
    "value": "DBQuery: hello.tablebusiness -> undefined" 
    }, 
    "ok": 1 
} 

¿Qué significa por hello.tablebusiness -> indefinido está más allá de mí. Como se ve desde arriba, ejecuto con éxito la consulta muy bien en mongo.exe

Parece que rockmongo tiene una función muy limitada. Me pregunto cómo ver realmente el resultado. Cómo ejecutar el comando mongodb aleatorio en rockmongo y observar el resultado.

Respuesta

8

En primer lugar estoy de acuerdo con usted: rockmongo tiene una función muy limitada en este momento. Lo uso para consultas simples porque me permite acceder a mi servidor remoto desde cualquier dispositivo habilitado para la navegación.

El área "ejecutar" en rockmongo se ejecuta con "Javascript API" y no se comporta como el shell mongo.

Prueba esto:

function() { 
    var cur = db.tablebusiness.find(
    {"_id": "the-simmons-paradise__41.85_-87.88"} 
    ); 
    var out = []; 
    cur.forEach(function(x){out.push(x);}); 
    return(out); 
} 

puede ejecutar consultas simples clic en el nombre de la colección, a escribir la condición de consulta en la zona alta ...

{"_id": "the-simmons-paradise__41.85_-87.88"} 

... y luego en "enviar consulta "

+0

Gracias! Estaba confundido acerca de esto también, pero ahora veo que find() está devolviendo algún tipo de objeto de cursor sobre el que tienes que iterar. Es un poco doloroso, pero puedo trabajar con eso ahora. – thaddeusmt

+0

de nada @thaddeusmt – baffonero

0

Una respuesta alternativa - que puede parecer un poco extraño - es usar el método aggregate, pero solo la canalización en un solo comando $match, así:

function() { 
    return db.tablebusiness.aggregate([ 
    { $match: { 
     "_id": "the-simmons-paradise__41.85_-87.88" 
    }} 
    ]); 
} 
Cuestiones relacionadas