mongo dbname --eval 'db.collection.find () " ne fonctionne pas
Pourquoi ce travail:
# mongo dbname
MongoDB shell version: 1.8.3
connecting to: nextmuni_staging
> db.collection.find()
{ "foo" : "bar" }
> bye
Bien que cela ne fonctionne pas:
# mongo localhost/dbname --eval 'db.collection.find()'
MongoDB shell version: 1.8.3
connecting to: localhost/dbname
DBQuery: dbname.collection -> undefined
Il doit être exactement la même, non?
Merci!
- Eu exactement le même problème. Je remarque 'db.collection.drop()' fonctionne aussi.
Vous devez vous connecter pour publier un commentaire.
Le retour de val de
db.collection.find()
est un type de curseur. L'exécution de cette commande à partir de l'intérieur de la coquille va créer un curseur et de vous montrer la première page de données. Vous pouvez commencer à passer à travers le reste en répétant le " il " de commande.Je pense que la portée des variables utilisées lors de l'exécution d'un eval avais script est uniquement pour la durée de vie du script (les données peuvent être conservées dans des collections bien sûr) donc, une fois que le script se termine ces variables curseur n'existent plus et ainsi vous serez en mesure d'envoyer un autre eval script de la page de données. Ainsi, le comportement que vous obtenez au cours d'une session shell ne serait pas vraiment travailler à partir d'un eval script.
Pour approcher le comportement que vous pourriez exécuter quelque chose comme ceci:
Qui vous montre ce que fait la commande exécuter et de produire un curseur que vous pouvez ensuite effectuer une itération sur envoyer la sortie vers stdout.
Edit: je pense que le point que j'essayais de faire est que la commande que vous émettez est son juste la sortie n'est pas ce que vous attendez.
La
printjson
fonctions, couvre beaucoup de terrain lors de l'écriture de scripts avecmongo --eval '...'
. Plutôt que de chaînage.forEach
vous pouvez simplement envelopper votre appel.