問題タブ [mongo-shell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2290 参照

mongodb - eval インライン mongodb レプリカ セット構成

次の方法で mongodb レプリカ セットをセットアップできます。

config.jsJavaScript構成ファイルはどこにありますか:

しかし、インラインで行うことはできません:

エラーが発生しました:

使ってみた--eval

そして、それは私に出力を与えます:

ただし、レプリカ セットは作成されません。

レプリカ セット構成をインラインで作成する必要があるのはなぜですか? sh最初にすべてのmongoノードが開始され、次にレプリカセットが開始される1つの大きなファイルを作成しているためです。そして、 bashコードをドライに保つため$port1に、$port2、などのbash変数を使用しています。$port3したがって、インライン構成の代わりに使用する場合は、ファイルとファイルconfig.jsでポート番号を 2 回編集する必要があります。shconfig.js

では、ファイルではなくbashコマンドを使用してレプリカセットを開始する方法はconfig.js?

0 投票する
1 に答える
575 参照

bash - mongo evalは、env変数を介して指定されたeval式を評価していません

mongo スニペットを評価する「ラッパー」bash エイリアス関数を作成しようとしています

そして、スニペットをenv変数として保存しています

私は物事を実行します

しかし、それは操作を実行しません。それだけ

$ mongoshelleval $delsessions
MongoDB シェル バージョン: 2.4.8
Thu Aug 07 03:50:18.809 versionArrayTest が
接続先に渡されました: db
Thu Aug 07 03:50:18.861 への新しい接続の作成:127.0.0.1:27017
Thu Aug 07 03:50: 18.867 BackgroundJob 開始: ConnectBG
Thu Aug 07 03:50:18.870 接続接続!
db.sessions.drop()
Thu Aug 07 03:50:18.880 収集されていない 1 つのクラス mongo::DBClientWithCommands オブジェクトを解放する

エラーをスローすることなく。引数を出力するだけですdb.sessions.drop()

そして、セッションはまだそこにあります

$ mongoshell
MongoDB シェル バージョン: 2.4.8
接続先: db
db.sessions.find()
{ "_id" : "yr5rxguSbb32Q880Jj36Rq2_uU
{ "_id" : "9PQh_ml5Gloiaunv6pbgVevM_6
{ "_id" : "OacGUyf-V1DcTQIg3lMgFXUL-N
: "_id" "GC7gh09iqVUny9HM8gnGl9Hzxt
{"_id":"_f4koE0tagJ7vwuU76BatcDeEb {"_id
":"t1CX_eqi7FcCREfBB2X5CpgOcz

意図したとおりに動作しないのはなぜですか? また、クエリを実行していないのにエラーが発生しないのはなぜですか?

0 投票する
1 に答える
39331 参照

javascript - すべての Mongo コレクションをループしてクエリを実行する

まず、私はmongodbにまったく慣れていません。これが、解決策を見つけることができなかった私の質問です。

3 つの異なるコレクションがあるとします。

このデータベース内のすべてのコレクションを反復処理し、これらの各コレクションに最後に挿入されたタイムスタンプを見つけるスクリプトを作成したいと考えています。これがmongos内で機能するものです。

1.問題(すべてのコレクションを繰り返す)

sthへの可能性はありますか。お気に入り。

ここでの問題、の割り当てがmy_collections機能しません。私は得るSyntaxError: Unexpected identifier。「show」ステートメントを引用する必要がありますか? それは可能ですか?

2. 問題 (コレクションを js var に格納する)

これを行うことで、問題 1 を回避できます。

last_element.next()次のエラーを生成します。

エラー hasNext: src/mongo/shell/query.js:124 で false

last_element が正しく保存されていないようです。

私が間違っていることについて何か提案はありますか??


アップデート

ニールの答えは、私をこの解決策に導きます。彼のコードに加えて、関数getTimestampが実際に存在するかどうかを確認する必要がありました。一部の「仮想」コレクションでは、_id プロパティがないようです。

0 投票する
2 に答える
4136 参照

javascript - mongoシェルで「require(モジュール)」する方法

データ管理用の mongo シェル スクリプトを作成しています。関数ライブラリをモジュールとして利用するモジュラーコードで書きたい。場合によっては、私自身のモジュール。それ以外の場合は、慎重に選択された node.js モジュール (Mongo シェル環境で動作することがわかっている、uuid など)。

残念ながら、Mongo には実際のモジュール管理がありません。load() は同じものではありません。いわば埋め戻しを探しています。

CommonJS モジュールの読み込み機能を提供できるライブラリ、Mongo シェルで実行するのに十分な汎用性があるライブラリ、または Mongo シェルで実行するために移植されたライブラリを知っている人はいますか?

はい、知っています。純粋な node.js 環境で実行できます。しかし、mongo シェルで動作する実際のモジュール ローダーのようなものがあれば、それが私の最初の選択です。

0 投票する
2 に答える
4995 参照

mongodb - MongoDB:コレクション内の何百万ものレコードでcount()コマンドの実行時間を見つけますか?

次のシナリオで、何百万ものテストデータレコードで構成されるコレクションで count() を実行するのに必要な時間を見つけようとしています:-

1)最初のMongoシェルから、コードを使用して何百万ものレコードをコレクションに挿入しています

2) 2ndMongo シェルから、そのコレクションで count() を見つけようとしています ( Imp: 1st Mongo シェルで挿入がまだ実行されている間)

調べてみたところ、explain() と stats() は count() コマンドに適用できないことがわかりました。

いくつか

コレクション (ライブ シナリオのようなもの) で挿入が行われているときに count() にかかる時間を調べる必要がありますか?

これを行うための他の良いアプローチはありますか?

0 投票する
1 に答える
3682 参照

mongodb - mongoシェルスクリプトでshardCollectionコマンドが機能しない理由

私はmongoシェルスクリプト内で次のコマンドを実行しようとしています:

しかし、それは何もしません。

ただし、スクリプトから実行すると:

すべてのヘルプ オプションが表示されます。

つまり、'sh' 変数は mongo シェル スクリプトでも使用できることを意味します。

それでは、mongo シェル スクリプトを使用して shardCollection を実行できないのはなぜですか?

編集:ニールのコメントに感謝..これが私のモンゴシェルスクリプトです

各コレクション内の各ドキュメントにa,b,cは、フィールド「shardKey」(インデックス付き) があります。したがって、「shardKey」は、特定の shardKey を持つドキュメントを 1 つのシャードに保持するのに役立ちます。

今、mongoシェルに行って実行すると

出力は次のようになります

ここにリストされていないコレクションのシャーディング。機能していないことを意味しsh.shardCollectionます。

0 投票する
1 に答える
2731 参照

mongodb - 外部エディターで MongoDB のオブジェクトを編集してもオブジェクトが更新されない

Mongo シェルを使用しています。EDITOR をメモ帳 ++ パスに設定しました。オブジェクトを作成し、EDIT コマンドを使用してメモ帳 ++ を使用してオブジェクトを編集しましたが、オブジェクトが更新されません。

私は何が欠けていますか?