[解決済み] プロダクションコードでの Mongoose インデックス作成
質問
マングースあたり
ドキュメント
に対して
MongooseJS
と
MongoDB
/
Node.js
:
アプリケーションが起動すると、Mongoose は自動的に
ensureIndex
を呼び出します。インデックスを作成するとパフォーマンスに大きな影響を与えるので、開発環境ではこの挙動を無効にすることを推奨します。この挙動を無効にするにはautoIndex
オプションを false に設定することでこの動作を無効にできます。
これはデプロイ前に mongoose から自動インデックスを削除するように指示しているようで、アプリケーション起動時に Mongo にすべてのインデックスを巡回させるように指示することから Mongoose を最適化しているようです。
実運用コードでインデックスを処理する適切な方法は何でしょうか? 外部スクリプトがインデックスを生成すべきなのでしょうか? あるいは
ensureIndex
は不要なのでしょうか?
編集してください。
補足すると、MongoDBは優れた
ドキュメント
を提供しています。
どのように
でインデックスを作成しますが
なぜ
または
いつ
のような明示的なインデックス作成ディレクティブを行うべきでしょう。 インデックスが存在するコレクションに対して、ライターアプリケーションが自動的にインデックスを最新に保つべきであると思われます。
ensureIndex
は一回限りのもの (新しいインデックスが適用されるときに実行される) であり、その場合 Mongoose の
autoIndex
は通常のサーバー再起動では動作しないはずです。
どのように解決するのですか?
Mongoose のドキュメントでは、なぜ大々的に
autoIndex
を無効にすることを推奨している理由が理解できません。 いったんインデックスが追加されると、その後の
ensureIndex
の呼び出しは、単にインデックスが既に存在していることを確認してから返します。 したがって、パフォーマンスに影響を与えるのは最初にインデックスを作成するときだけで、その時点ではコレクションが空であることが多いので、インデックスの作成はいずれにせよ迅速に行われます。
私の提案は
autoIndex
例えば、何百万ものドキュメントを持つ既存のコレクションに新しいインデックスを追加し、それがいつ作成されるかをもっと制御したい場合などです。
関連
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】Mongooseで配列の値を更新する方法
-
webpack ENOENTソリューションの起動
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み] Mongooseの"__v "フィールドとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] ブラウザで動作しているURLで「connect ETIMEDOUT」エラーが発生する原因は何ですか?
-
[解決済み] TypeError: コールバックはnodejsの関数ではありません。
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] Express.js req.bodyが未定義です。