70

私は次のようなmongoファイルとスクリプトファイルを使用しています。

$ mongo getSimilar.js

ファイルに引数を渡したいのですが:

$ mongo getSimilar.js apples

次に、スクリプトファイルで、渡された引数を取得します。

var arg  = $1;
print(arg);
4

7 に答える 7

116

--evalシェルスクリプトを使用して、渡されたコマンドを変更します 。

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

または、グローバル変数を作成します(Tad Marshallへのクレジット):

$ cat addthem.js
printjson( param1 + param2 );
$ ./mongo --nodb --quiet --eval "var param1=7, param2=8" addthem.js
15
于 2012-04-11T22:19:52.223 に答える
27

それはできませんが、それらを別のスクリプトに入れて、最初にロードすることはできます。

// vars.js
msg = "apples";

getSimilar.jsは次のとおりです。

print(msg);

それで:

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

ただし、それほど便利ではありません。

于 2012-04-11T22:05:57.107 に答える
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 mongo-create-user.js
于 2015-03-09T11:19:29.987 に答える
1

シェルスクリプトを使用して、mongoコマンドをmongoにパイプしました。mongoコマンドで、シェルスクリプトに渡した引数を使用しました(つまり、使用しました$1)。

#!/bin/sh

objId=$1
EVAL="db.account.find({\"_id\" : \"$objId\"})"
echo $EVAL | mongo localhost:27718/balance_mgmt --quiet
于 2016-02-24T20:01:57.590 に答える
0

私は自分で問題を解決するために小さなユーティリティを書きました。ユーティリティを使用すると、スクリプトの先頭に次のコマンドを追加しmongoexecてコマンドを実行できます。./getSimilar.js apples

#!/usr/bin/mongoexec --quiet

スクリプト内で、引数にとしてアクセスできますargs[0]

https://github.com/pveierland/mongoexec

于 2017-06-13T22:26:34.170 に答える
0

私はjavascriptバンドラーパーセルを使用してこの問題を解決しました:https ://parceljs.org/

これにより、次のようなスクリプトでノード環境変数を使用できます。

var collection = process.env.COLLECTION;

区画を使用してビルドすると、env変数がインライン化されます。

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

唯一の欠点は、env変数を変更するたびにスクリプトを再構築する必要があることです。しかし、小包は本当に速いので、これは実際には問題ではありません。

于 2018-11-08T11:40:18.640 に答える
0

2022年の更新:

使用mongoshする場合は、から実行引数を読み取ることができますprocess.argv

mongosh script.js param1 param2 
// process.argv will be [.... , 'param1', param2']

トリッキーな点はmongosh、パラメータ(たとえばparam1param2)を追加のスクリプトとして実行しようとすることですが、これは、を使用してスクリプトを終了することで防ぐことができますquit()。(TBH、それが設計によるものか、意図されたものか、文書化されたものかはわかりません)

于 2022-02-26T05:28:47.973 に答える