問題タブ [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 - MongoDB インデックス強化の提案
「Index Cardinality」ビデオ [M101J: MongoDB for Java Developers] から学んだことの 1 つは、マルチキー インデックスを含むドキュメントが移動されると、そのドキュメントのすべてのインデックスも更新する必要があり、かなりのオーバーヘッドが発生するということです。
どうにかしてこの制約を回避することは可能だと思いました。明らかな解決策は、別のレベルの間接化を追加することです (これはコンピューター サイエンスの問題を解決するための有名なパターンです :-)) インデックスからドキュメントを直接参照する代わりに、そのドキュメントを参照する各ドキュメントのエンティティを作成し、インデックスを取得します。そのエンティティを参照するには、ドキュメントを移動するときに、そのエンティティのみを変更する必要があります (BSON 形状が常に同じであるため、エンティティは移動しません)。もちろん、このソリューションの問題は、パフォーマンスのためにスペースをトレードすることです (インデックスもこの問題に悩まされます)。
しかし、すべての希望が失われるわけではありません。MongoDB では、すべてのドキュメントに不変の _id フィールドがあり、自動的にインデックスが作成されます。これらすべてを考えると、ドキュメントが移動された場合、関連付けられた _id インデックスも更新されることがわかっているので、他のすべてのインデックスがドキュメントの対応する _id インデックスを参照するようにしないのはなぜでしょうか?
このソリューションを考えると、ドキュメントが移動したときに更新される唯一のインデックスは _id インデックスです。
このソリューションが MongoDB に実装できるかどうか、または実用的でなくなるような隠れた落とし穴があるかどうかを知りたいですか?
ありがとう
spring - Mongodb ユニーク インデックス
2 つのフィールドに基づいて一意のマルチキー インデックスを作成しようとしています。
私の文書:
メールの一意のインデックスを既に確認しています。そして今、「idCommande」ごとに一意の制約を作成したいのですが、ユーザーの「コマンド」で同じ「idCommande」を使用して「コマンド」を作成することはできません。
私は試してみました
また:
しかし、私はまだ同じ「idCommande」を挿入できます。
addToSet が存在することは知っていますが、グローバル ドキュメントに制約を加えたくありません
アイデアはありますか?
前もって感謝します
mongodb - MongoDB は Index の再構築を保証しますか?
MongoFB のドキュメントを読んでいます。この URL http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/ で 、「mongo シェルで ensureIndex() を使用して新しいインデックスを作成するか、ドライバーで同等の方法を使用して、新しいインデックスを作成します。 .この操作は、この mongod インスタンスでインデックスを作成または再構築します"
よくわかりました?インデックスが既に存在する場合、mongoDB は再構築を実行しますか?
したがって、「reIndex()」との違いは、reIndex() がコレクションのすべてのインデックスに対して再構築を実行することです。それが正しいか?
mongodb - 間違ったインデックスを使用している Mongodb
次のように、コレクションに複数のインデックスがあります。特に、クエリで を使用したいのですが、代わりに"gTs_1_RE_H_1_l_1"
クエリが使用されています。"gTs_1"
ここでは、' ' 単独のインデックス(TTL ベースのインデックス) と、' ' と ' ' を最初の 2 つのキーgTs
とする複合インデックスがあります。( )gTs
RE_H
"gTs_1_RE_H_1_l_1"
今、私はこのクエリを実行しようとしています:
これは私の知る限り、を使用する必要があります"gTs_1_RE_H_1_l_1"
が、驚くべきことに、
"gTs_1"
次の出力で言及されているように使用しています。
ただし、ヒントを提供すると、正しいインデックスが取得されます。したがって、次のクエリを実行すると:
次の出力が得られます。
誰かが何が起こっているのか理解するのを手伝ってくれませんか!
php - MongoDB は、有効なシャード キーがないとアップサートできません
申し訳ありませんが、私は MongoDB を初めて使用します。シャードの概念と、ハッシュされたシャード キーを介してサーバー間でデータを分散する方法を理解していると思います。
たとえば、シャードされたユーザーのコレクションがあり、_id_hashed のインデックスがあります (これまでのところ、ユーザーのデータベースが均等に分散されています)。その後、一定時間非アクティブだったユーザーをタイムアウトにする必要があります。
次のエラーが表示されます。
ただし、クエリするIDがわからず、セッションデータが変更されるため、シャードキーとして機能できません
これは、データの構造またはクエリの問題ですか?
mongodb - 重複がない場合、Mongo が重複でクラッシュする
mongo サーバー 2.6 のみで構成されるレプリカ セットがあります (1 週間前にアップグレードしました)。仮想マシン上のWindowsサーバー2008で実行しています。最近、やや厄介な問題に気付きました: フィールド sku に一意のインデックスを持つ items_full というコレクションがあります。次の更新クエリを実行すると:
エラーでクラッシュします:
E11000 重複キー エラー インデックス:
inventory.items_full.$sku_1 複製キー: { : "DSSWI#Luc_W_Lp-12550-Gy-014-Gy" }
上記の sku を検索すると、1 つの結果しか得られません。何か案は?
ありがとう
mongodb - クエリをカバーするインデックスを構築する
アプリケーションの手順は次のとおりです。
- ツイートが取得され、MongoDB コレクションに保存されます。検索ツイート
- データは search_tweets から読み取られ、いくつかのパラメーターが計算され、結果が別のコレクションに保存されます。Twitter_Processed . このコレクションの数ははるかに少ないです。のキーであり、そのほとんどは計算フィールドです
サンプル文書 - search_tweets
サンプル文書 - Twitter_Processed
ドキュメントを読んだ後、次の場合にインデックス/複数のインデックスを作成するにはどうすればよいですか?
- find/$match では、キー「searchProfileId」と「schedularId」が使用されます
- キー「text」、「user」(いくつかのサブドキュメントがあります)、「searchProfileId」、「schedularId」および「uniqueId」、「id_str」が返されます
- 「テキスト」にはランダムなツイートがあります。それを複合インデックスに含めることは理にかなっていますか? そうでない場合、テキスト インデックスを作成すると何らかの形で役立ちますか (「テキスト」の値内でテキスト検索は行われません)。
基本的に、クエリがカバーされていることを確認したいと思います。