2010-08-29 4 views
21

Quelles sont les bases des scripts MongoDB?Notions de base des scripts MongoDB - Comment faire pour

Je pense que le script se terminera par .js, et nous courons à l'aide mongo try.js

Mais si je mets

print(db.foo.find()) 

dans try.js et utiliser mongo try.js

il dira

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

et si je nous e l'shell interactif en tapant mongo et le type

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

la {a : 1} était quelque chose que j'inséré plus tôt en utilisant db.foo.insert({a:1})

quelles sont les bonnes façons de faire des scripts MongoDB et comment imprimer des choses comme un Ruby irb ou Python IDLE? Merci. (La structure peut aussi bien imprimer ou de puts a.inspectp a Ruby de a habituellement (tous les noms de variables et les valeurs dans a))

alert(db.foo.find()) et console.log(db.foo.find()) ne fonctionnera pas non plus.

+3

je trouve que je peux imprimer les choses en utilisant 'printjson ({hm: 'ouais'})' ' ou db.foo.find() .forEach (printjson) 'sinon dans le shell –

Répondre

36

Les fichiers de script externes sont exécutés en dehors du contexte du shell.

La commande de base de données db.foo.find() renvoie uniquement un curseur; il n'imprime rien par lui-même. Lorsque la commande est émise à partir du shell, le shell va itérer le curseur et imprimer les résultats. Lorsque la commande est exécutée à partir d'un fichier script externe, rien n'est imprimé.

La commande print() imprime la représentation sous forme de chaîne de l'objet. Dans votre cas, il est le curseur:

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

Si vous avez besoin d'imprimer les résultats de la requête, vous aurez à itérer le curseur dans votre fichier de script et imprimer chaque résultat, de façon similaire à ce que fait le shell:

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

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

Il existe une fonction intégrée pour l'impression d'un objet json.

Ajoutez simplement .forEach(printjson) à la fin de l'appel de fonction.

db.foo.find().forEach(printjson); 
Questions connexes