問題タブ [mongodb-indexes]
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.
mongodb - Mongo では、シャード環境で一意のインデックスがサポートされていますか?
新しい Web サイト用に Mongo を検討しています。2 人のユーザーが同じメール アドレスでサインアップしないようにしたいので、メール フィールドに一意のインデックスが必要です。
これは、シャードされた Mongo 環境でサポートされていますか? Mongo のドキュメントには、一意のインデックスがサポートされていると記載されていますが、シャードについては言及されていません。
http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes
mongodb - mongodb:Compound インデックスで構成される _id インデックスに 1 つのフィールドを追加する方法
_id インデックスを削除できません。なぜですか?
コマンドを実行しようとすると、dropIndexes
すべてのインデックスが削除されますが、_id インデックスは削除されません。
やってもうまくいき'db.runCommand'
ません:
良くないですよ。
複合インデックスで _id を含むフィールドを使用できますか?
オンラインで何も見つかりませんensureindex
でした。コマンドでは実行できません。
db.fs_files.ensureIndex({'_id':1, '作成':1});
上記のコマンドにより、新しい複合インデックスが作成されました。同様の「インデックスの作成」コマンドは見つかりませんでした。
デフォルトの _id インデックスは一意のインデックスですか?
getIndexes
戻り値は一意のインデックスではありません。
mongodb - カウンターフィールドに対するインデックスを作成する
カウンターとして機能しているフィールドの場合、つまり、値は時間の経過とともに変更され、順序付けられたエンティティを返すために使用されます(フィルター処理されたエンティティのこのフィールドに対してソートされます)、このフィールドのインデックスを作成する必要がありますか?
mongodb - あるフィールドでフィルタリングし、別のフィールドでソートするために、クエリ用に 2 つの個別のインデックスを作成することをお勧めしますか?
次のようなクエリがあります
フィールド a と b のインデックスを別々に作成することをお勧めしますか?
mongodb - オブジェクト配列とオブジェクトのMongoインデックス付け
かなりの数のフィールドを処理する連絡先データベースを実装しています。それらのほとんどは事前定義されており、バインドされていると見なすことができますが、そうでないものもいくつかあります。これらのフィールドの 1 つを「グループ」と呼びます。現在の実装方法は次のとおりです (各ドキュメント/連絡先には「グループ」フィールドがあります)。
しかし、いくつか読んだ後、私はそれをやるべきだと思われます:
次に、インデックスを適用しますdb.contact.ensureIndex({'groups.id':1});
私の質問は機能に関するものです。2 つの構造の違いと、実際にインデックスを作成する方法は何ですか (各ドキュメント/連絡先内でインデックスを作成するだけですか、それともすべてのドキュメント/連絡先からのすべてのグループを含む本格的なインデックスを作成しますか?)。
私はこれが構造的に最善の方法であるという仮定の下で行っていますが、間違っている場合はお知らせください.
mongodb - MongoDB-一意のインデックスと複合インデックス
3つのフィールドを持つ架空のドキュメントを想定します。
- _id:ObjectId
- emailAddress:文字列
- アカウント:文字列
ここで、emailAddress ANDアカウントに関するクエリを指定すると、次の2つのインデックスのどちらがパフォーマンスが向上しますか。
- emailAddressのみの一意のインデックス(一意のフィールドであると想定)
- アカウントとemailAddressの複合インデックス
mongodb - mongodb:パフォーマンスの低いインデックス
遊んだ後
db.largecollection.find({$ or:[{identifierX: "sha1_hash123"}、{identifierY: "md5_hash456"}、{identifierZ: "another_hash789"}]})
mongodbが自動的に作成したインデックスを確認しました。識別子x/y / zの「単一の」ensureIndexに加えて、現在識別子X_1_identifierY_1_identifierZ_1があり、パフォーマンスが低下しています:-(
$ andはないが、$ orクエリがあるので、単一の識別子にインデックスを使用する方が速いことをmongodbに説明する方法やヒントはありますか?
どうも
mongodb - モンゴトリプルコンパウンドインデックス
二重複合インデックス{a:1、b:1}がある場合、 bのみでクエリを実行すると、インデックスは使用されないことは理にかなっています(つまり、クエリでaを「スキップ」することはできません)。ただし、単独でクエリを実行する場合は、インデックスが使用されます。
ただし、トリプルコンパウンドインデックス{a:1、b:1、c:1}が与えられた場合、私のExplainコマンドは、aとcでクエリを実行するときにインデックスが使用されることを示しています(つまり、クエリでbを「スキップ」できます)。
Mongoはacのクエリでabcインデックスをどのように使用できますか?また、この場合のインデックスはどの程度効果的ですか?
バックグラウンド:
私のユースケースは、a、b、cでクエリを実行したい場合と、a、cでクエリを実行したい場合があります。ここで、a、b、cに1つのインデックスのみを作成する必要がありますか、それともa、cに1つ、a、b、cに1つ作成する必要がありますか?
( cは選択性の高いマルチキーインデックスであるため、a、c、bにインデックスを作成することは意味がありません。)
mongodb - デフォルトのMongoインデックスを再インデックス化する方法は?
さて、私は 1 億のレコードを持つ MongoDB コレクションを修正しています。前の開発者がデフォルトの _id を本当に間違ったもので上書きしました。修正したら、_id インデックスを再生成するにはどうすればよいですか? mongoRestore 以外に、より速い方法はありますか?
ここに私の更新手順があります:
1) データベースを元の DB から別の DB にコピーします。
2) すべてのレコードの _id を削除します。
3) すべてのレコードの _id を再生成します (これはどうすればよいかわかりません)
4) 新しい _id を使用してコレクションを元の DB にコピーします (または、新しい / temp DB から mongoDump を作成します。次に、ファイルを元の DB、MongoRestore に送信します (その後、各レコードには新しい _id が含まれます。方法は機能しますが、遅いようです。)
mongodb - Mongoインデックスの詳細
私は次のようなmongodbコレクションを持っています
次のようなインデックスを作成する必要があります
しかし、私が見ているのは、値X:1、Y:1、Z:1は冗長性につながり、ソートに使用する予定の時間パラメーターのみが変更されていることです。上記のインデックスを作成して、3つの別々のインデックスを作成する必要がないようにするためのより良い方法はありますか?
また、私が次のようなインデックスを持っているかどうかを言います
そして、Mongoがx = 5、y =任意の値、Z = 4、sort = T_updateのような結果を返すようにしたいのですが、上記のインデックスが役立つか、次のようなインデックスを作成する必要があります。
私はそれを避けられることを願っています。