Вопрос по mongodb, javascript – Как передать аргумент монго-скрипту

56

Я использовал файлы монго и скриптов, как это:

<code>$ mongo getSimilar.js
</code>

Я хотел бы передать аргумент в файл:

<code>$ mongo getSimilar.js apples
</code>

А затем в файле скрипта подберите переданный аргумент.

<code>var arg  = $1;
print(arg);
</code>

Ваш Ответ

6   ответов
0

https://parceljs.org/

При этом можно использовать переменные среды узла в скрипте, например:

var collection = process.env.COLLECTION;

при сборке с участком env var вставляется:

parcel build ./src/index.js --no-source-maps

Единственным недостатком является то, что вам нужно пересобирать скрипт каждый раз, когда вы хотите изменить env vars. Но так как посылка действительно быстрая, это не проблема, имхо.

96

--eval и используйте сценарии оболочки, чтобы изменить переданную команду.

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

Или сделайте глобальные переменные (спасибо Тэду Маршаллу):

$ cat addthem.js
printjson( param1 + param2 );
$ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js
15
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededconf = rs.conf() conf.members.forEach( function (member) { member.priority = 0.5 } ) conf.members[memberId].priority = 1 // rs.reconfig(conf)Error: User Rate Limit Exceededmongo --eval "var memberId=3" chooseprimary.jsError: User Rate Limit Exceeded
17

но вы можете поместить их в другой скрипт и загрузить его первым:

// vars.js
msg = "apples";

и getSimil.js был:

print(msg);

Затем:

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

Не совсем так удобно, хотя.

Error: User Rate Limit Exceeded--eval.
1

команде mongo я использовал arg, который передал сценарию оболочки (т.е. я использовал$1):

#!/bin/sh

objId=$1
EVAL="db.account.find({\"_id\" : \"$objId\"})"
echo $EVAL | mongo localhost:27718/balance_mgmt --quiet
Error: User Rate Limit Exceededfind({\"_id\" : ObjectId(\"$objId\")})Error: User Rate Limit ExceededObjectId()Error: User Rate Limit Exceeded
0

mongoexec утилита, вы сможете запустить команду./getSimilar.js apples добавив в начало вашего скрипта следующее:

#!/usr/bin/mongoexec --quiet

Внутри скрипта вы можете получить доступ к аргументам какargs[0].

https://github.com/pveierland/mongoexec

Error: User Rate Limit ExceededsudoError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

Установите переменную оболочки:

password='bladiebla'

Создать JS-скрипт:

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

Передать сценарий Монго:

mongo mongo-create-user.js
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы