Mongoシェルから行を読み取る方法はありますか?readline()
は定義されておらず、どちらも定義されていませんsystem.stdin
。
MongoDBシェルによって実行されるスクリプトに入力を供給するのではなく、インタラクティブモードでこれを行う必要があります。
Mongoシェルから行を読み取る方法はありますか?readline()
は定義されておらず、どちらも定義されていませんsystem.stdin
。
MongoDBシェルによって実行されるスクリプトに入力を供給するのではなく、インタラクティブモードでこれを行う必要があります。
@Stennieのコメントによると、これは現在不可能です。
公式には、これはMongoシェルでは不可能です。
非公式に、はい、それは可能です。ユーザー入力を読み取るために使用できる小さなハックが1つあります。
passwordPrompt
文書化されていない多くの関数の中でMongoシェルには、ユーザー入力の読み取りに使用できるという名前の関数が1つ含まれています。
ただ、このハックには注意しなければならないいくつかの制限があります。
Enter password:
をコンソールに出力し、このプロンプトを変更するオプションはありません。この関数はネイティブ(js以外)であるため、プロンプトを削除するために再定義することはできません。ただし、ユーザー入力を取得するたびに「パスワードの入力:」プロンプトが表示され、入力内容が表示されなくてもかまわない場合は、これでうまくいくはずです。
これが一例です。インタラクティブモードで実行することも、.jsファイル内に書き込むこともできます。
user_input = passwordPrompt();
print("user inputed: " + user_input);
それを実行して「hacknation」と入力すると、これからの出力は次のようになります。
Enter password:
user inputed: hack nation
また、Mongoシェルを使用すると、シェル自体からOSコマンドを実行できます。これにより、mongoおよびjavascript以外のユーティリティを使用してユーザー入力を処理できます。たとえば、Windows PowerShellと.netFrameworkを使用してグラフィックユーザーインターフェイスを作成し、GUIを使用してユーザーと対話し、ユーザー入力をMongoシェルに戻すmongoシェル用のプログラムを作成しました。私はこれよりも好きpasswordPrompt
です。
Mongoシェルには、ユーザー入力の取得、ファイルシステムのI / O関数など、より高度な処理を実行するために使用できる、文書化されていない関数がかなりあります。