76 votes

Comment passer un argument à Mongo Script

J'utilise mongo et des fichiers de script comme celui-ci :

 $ mongo getSimilar.js

Je voudrais passer un argument au fichier :

 $ mongo getSimilar.js apples

Et puis, dans le fichier de script, récupérez l'argument transmis.

 var arg  = $1;
print(arg);

124voto

jcollum Points 10236

Utilisez --eval et utilisez les scripts shell pour modifier la commande transmise.

mongo --eval "print('apples');"

Ou créez des variables globales (crédit à Tad Marshall) :

 $ cat addthem.js
printjson( param1 + param2 );
$ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js
15

29voto

kristina Points 7269

Vous ne pouvez pas le faire, mais vous pouvez les mettre dans un autre script et le charger en premier :

 // vars.js
msg = "apples";

et getSimilar.js était :

 print(msg);

Puis:

 $ mongo vars.js getSimilar.js
MongoDB shell version: blah
connecting to: test
loading file: vars.js
loading file: getSimilar.js
apples

Pas tout à fait aussi pratique, cependant.

3voto

robodo Points 131

Définissez une variable shell :

 password='bladiebla'

Créer un script js :

 cat <<EOT > mongo-create-user.js
print('drop user admin');
db.dropUser('admin');
db.createUser({
user: 'admin',
pwd: '${password}',
roles: [ 'readWrite']
});
EOT

Passer le script à mongo :

 mongo mongo-create-user.js

1voto

Tony Points 19

J'ai utilisé un script shell pour diriger une commande mongo vers mongo. Dans la commande mongo, j'ai utilisé un argument que j'ai passé au script shell (c'est-à-dire que j'ai utilisé $1 ):

 #!/bin/sh

objId=$1
EVAL="db.account.find({\"_id\" : \"$objId\"})"
echo $EVAL | mongo localhost:27718/balance_mgmt --quiet

0voto

user764486 Points 161

J'ai écrit un petit utilitaire pour résoudre le problème par moi-même. Avec l' mongoexec , vous pourrez exécuter la commande ./getSimilar.js apples en ajoutant ce qui suit au début de votre script :

 #!/usr/bin/mongoexec --quiet

Dans le script, vous pouvez ensuite accéder aux arguments sous la forme args[0] .

https://github.com/pveierland/mongoexec

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X