2010-08-29 16 views
21

Quali sono le basi degli script MongoDB?Nozioni di base sugli script MongoDB - Come

Penso che la sceneggiatura si concluderà con .js, e si corre utilizzando mongo try.js

Ma se metto

print(db.foo.find()) 

in try.js e utilizzare mongo try.js

dirà

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

e se io e la shell interattiva digitando mongo e tipo

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

il {a : 1} era qualcosa ho inserito in precedenza utilizzando db.foo.insert({a:1})

quali sono i modi adeguati di fare script MongoDB e come stampare le cose come un rubino irb o Python IDLE? Grazie. (Di puts a.inspect o p a Rubino può sia stampare l'intera struttura del a solito (tutti i nomi delle variabili e dei valori in a))

alert(db.foo.find()) e console.log(db.foo.find()) non funzionerà neanche.

+3

ho scoperto che posso stampare le cose usando 'printjson ({HM: 'sì'})' o 'db.foo.find() .for Any (printjson) 'se non nella shell –

risposta

36

I file di script esterni vengono eseguiti al di fuori del contesto della shell.

Il comando database db.foo.find() restituisce solo un cursore; it non stampa nulla da solo. Quando il comando viene emesso dalla shell, la shell itererà il cursore e stamperà i risultati. Quando il comando viene eseguito da un file di script esterno, non viene stampato nulla.

Il comando print() stampa la rappresentazione di stringa dell'oggetto. Nel tuo caso, è il cursore:

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

Se avete bisogno di stampare i risultati della query, dovrete per scorrere il cursore nel file di script e stampare ogni risultato, in modo simile a ciò che la shell fa:

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

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

C'è una funzione incorporata per la stampa di un oggetto JSON.

Basta aggiungere .forEach(printjson) alla fine della chiamata di funzione.

db.foo.find().forEach(printjson); 
Problemi correlati