2010-08-29 18 views
21

¿Cuáles son los fundamentos de las secuencias de comandos de MongoDB?Fundamentos de las secuencias de comandos de MongoDB - Cómo

Creo que el guión terminará con .js, y ejecutarlo usando mongo try.js

Pero si pongo

print(db.foo.find()) 

en try.js y uso mongo try.js

dirá

MongoDB shell version: 1.6.1 
connecting to: test 
DBQuery: test.foo -> undefined 

y si nosotros e intérprete interactivo escribiendo mongo y tipo

> db.foo.find() 
{ "_id" : ObjectId("4c7a73428261000000003a7e"), "a" : 1 } 
> print(db.foo.find()) 
DBQuery: test.foo -> undefined 

la {a : 1} era algo Inserté anterior utilizando db.foo.insert({a:1})

cuáles son las formas correctas de hacer las secuencias de comandos MongoDB y cómo imprimir cosas como un rubí irb o Python IDLE? Gracias. (De puts a.inspect o p a Ruby puede imprimir tanto toda la estructura de a general (todos los nombres de las variables y los valores en a))

alert(db.foo.find())console.log(db.foo.find()) y tampoco funcionará.

+3

encontré que puedo imprimir cosas usando 'printjson ({hm: 'sí'})' o 'db.foo.find() .forEach (printjson) 'si no está en el shell –

Respuesta

36

Los archivos de script externos se ejecutan fuera del contexto del shell.

El comando de base de datos db.foo.find() solo devuelve un cursor; no imprime nada por sí mismo. Cuando el comando se emite desde el shell, el shell iterará el cursor e imprimirá los resultados. Cuando el comando se ejecuta desde un archivo de script externo, no se imprime nada.

El comando print() imprimirá la representación de cadena del objeto. En su caso, es el cursor:

> print(db.foo.find()) 
DBQuery: test.foo -> undefined 

Si necesita imprimir los resultados de la consulta, que tendrá que recorrer el cursor en el archivo de script e imprimir cada resultado, de manera similar a lo que hace la cáscara:

function printResult (r) { 
    print(tojson(r)) 
} 

db.foo.find().forEach(printResult) 
13

Hay una función incorporada para imprimir un objeto json.

Simplemente agregue .forEach(printjson) al final de la llamada a la función.

db.foo.find().forEach(printjson); 
Cuestiones relacionadas