5

簡単な質問の解決策が見つかりません:

私はファイルtext.jsを持っています

use somedb
db.somecollection.findOne()

ファイルからのリダイレクトコマンドを使用してcmdでこのファイルを実行すると: 「mongo < text.js」

正常に動作しています

しかし、私がこの方法を試してみると

「mongo text.js」または「mongo --shell test.js」

このエラーメッセージが表示されました

MongoDB シェル バージョン: 2.2.0 接続先: test type "help" for help Wed Dec 05 16:05:21 SyntaxError: missing ; ステートメントpathToFile \test.js.js:1 の前に読み込みに失敗しました: pathToFile \test.js.js

「somedbを使用」で失敗します。この行を削除すると、エラーなしで実行されますが、コンソールはクリアです。

何か考えはありますか、これは何で、どのように修正するのですか?

Sublime Text 2のビルドツールを作成するために、これに対する解決策を見つけようとしています。デフォルトのビルドファイルは

{
"cmd": ["mongo","$file"]
}

しかし、この場合、上記のエラーが発生します

PS。この質問を投稿した直後に、 SublimeText2 の解決策を見つけまし:

{
"selector": "source.js",
"shell":true,
"cmd": ["mongo < ${file}"]
}

PSS。この質問を投稿した直後に、 SublimeText3 の解決策を見つけまし:

{
"selector": "source.js",
"shell":true,
"cmd": ["mongo","<", "$file"]
}

このビルドツールは正常に動作します

4

4 に答える 4

9

use dbnameあなたのようにJSスクリプトファイルでmongoシェルを使用している場合、インタラクティブシェルのヘルパー関数は機能しません。

これには複数の解決策があります。最良の方法は、IMO は、次のようにホスト名とポート名と共に DB 名を明示的に mongo に渡すことです。

mongo hostname:27017/dbnamemongoscript.js // 27017 をポート番号に置き換えます

これを行うより良い方法は、スクリプトの最初に DB を定義することです。

mydb=db.getSiblingDB("yourdbname");
mydb.collection.findOne();
etc.

後者は、必要に応じて同じスクリプトで複数の DB と対話できるため、望ましいものです。

于 2012-12-05T22:39:23.067 に答える
2

mongo クライアントの起動時にデータベースを指定できます。

mongo somedb text.js

クライアントから stdout への出力を取得するには、スクリプトで printjson 関数を使用するだけです。

printjson(db.somecollection.findOne());
于 2012-12-05T15:40:07.963 に答える
0

これは、Windows + Sublime Text 2 + MongoDB 2.6.5で最終的に機能したものです

{
    "selector": "source.js",
    "shell":true,
    "cmd": ["mongo","<", "$file"],
    "working_dir" : "C:\\MongoDB\\bin"
} 
于 2014-12-05T16:24:51.997 に答える
0

そのモードを取得するには、Mongo をシェルから呼び出す必要があります。Ansible を使用すると、次のようになります。

- name: mongo using different databases
  action: shell /usr/bin/mongo < text.js

これの代わりに:

- name: mongo breaking
  command: /usr/bin/mongo < text.js
于 2014-01-24T16:19:31.950 に答える