問題タブ [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.
javascript - Meteor でコレクションのインデックスのリストを取得する
Meteor を使用してコレクションのインデックスのリストを取得するにはどうすればよいですか?
Mongo のプロキシに似たもの (またはプロキシに基づくもの)
Meteor にはまだ多くのインデックス API がありません (最終的には存在する予定です)。しかし、誰かがすでにこの問題を解決していることを願っています
乾杯db.collection.getIndexes
mongodb - ハッシュインデックスと昇順インデックスの Mongodb パフォーマンスの違い (順序付けされていないフィールドでハッシュを使用しない理由はありますか?)
mongodb には複数のタイプのindexがあります。この質問では、ソートに使用できる昇順 (または降順) インデックスと、ドキュメントによると「主にシャード クラスターで使用され、ハッシュされたシャード キーをサポートする」ハッシュ インデックスに興味があります ( source )。データの均等分布」(ソース)
db.test.ensureIndex( { "key": "hashed", "sortOrder": 1 } )
エラーが発生するため、次のようなインデックスを作成できないことはわかっています
私の質問:
インデックス間:
db.test.ensureIndex( { "key": 1 } )
db.test.ensureIndex( { "key": "hashed" } )
クエリdb.products.find( { key: "a" } )
の場合、どちらがよりパフォーマンスが高いですか?、hashed
キーはO(1)
質問にたどり着いた方法:
ではマルチキー インデックスを使用できないことを知る前にhashed
、フォームのインデックスを作成しました。db.test.ensureIndex( { "key": 1, "sortOrder": 1 } )
作成中に、ハッシュ インデックスが昇順インデックスよりもパフォーマンスが高いかどうか疑問に思いました (ハッシュは通常 ですO(1)
)。(上で述べたように)db.test.ensureIndex( { "key": "hashed", "sortOrder": 1 } )
許可されていなかったため、キーをそのまま残しました。しかし、問題は、キーによる検索でハッシュ化されたインデックスの方が高速であることです。
インデックスを作成した状況は次のとおりです。
キーで分類されたドキュメントのソート済みリストを含むコレクションがありました。
例:
{key: a, sortOrder: 1, ...}
, {key: a, sortOrder: 2, ...}
, {key: a, sortOrder: 3, ...}
, {key: b, sortOrder: 1, ...}
, {key: b, sortOrder: 2, ...}
...
分類に を使用し、key
ページネーションに sortOrder を使用したため、常に に 1 つの値をkey
使用してフィルタリングをクエリsortOrder
し、ドキュメントの順序には を使用しました。
これは、次の 2 つのクエリが考えられることを意味します。
- 最初のページの場合
db.products.find( { key: "a" } ).limit(10).sort({"sortOrder", 1})
- そして他のページについては
db.products.find( { key: "a" , sortOrder: { $gt: 10 } } ).limit(10).sort({"sortOrder", 1})
この特定のシナリオでO(1)
は、キーとO(log(n))
sortOrder を検索するのが理想的でしたが、それは許可されませんでした。
mongodb - 小さな固定サイズのmongoコレクションに対してインデックスを作成する必要がありますか?
固定数のエントリを持つ mongo コレクションがあり、その数が 300 ~ 400 を超えることはないとします。例:
これらのフィールドのうち、name と phoneNumber にインデックスを付けたいと思います。
このような小さなコレクションのインデックスを作成することは賢明ですか? その決定は、コレクションのサイズにまったく依存しますか? 作成するインデックスの数に依存しますか?
mongodb - ソートとクエリの両方を使用する場合の MongoDB での MapReduce インデックスの使用
MapReducesort
に aと a の両方を指定する場合、最適なパフォーマンスを得るquery
には、以下が必要です。
ソートで使用されるフィールドを含む 1 つのインデックス、次にクエリで使用されるフィールド
クエリで使用されるフィールドを含む 1 つのインデックス、次に並べ替えで使用されるフィールド
2 つの個別のインデックス
たとえば、ドキュメントにはフィールドが含まれていますA, B, C, D
。Map-Reduce は、フィールドの並べ替えとフィールドA
によるクエリを使用していますB, C
。
次のインデックスのどれが望ましいでしょうか。
{ "A" : 1, "B" : 1, "C" : 1 }
{ "B" : 1, "C" : 1, "A" : 1 }
{ "A" : 1 }
、{ "B" : 1, "C" : 1 }
これはどこかに文書化されていますか?(ソートとクエリの両方を使用する場合の map-reduce によるインデックスの使用。)
mongodb - 特定の配列 (または配列のキー) を取得するにはどうすればよいですか?
mongoDB で「unique6」を含む特定の配列 (または配列のキー) を取得するにはどうすればよいですか。
注: 配列内の値は一意です。
mongodb - mongodb compund インデックスとインデックスの交差
コレクションには、シャード全体で約 30 億のドキュメントが含まれます。インデックスによって完全に満たされないクエリを使用すると仮定します。また、ソートにキーを使用していません。
次のようなインデックスを持つことは理にかなっていますか (クエリに一致します):
または:
mongodb - MongoException: 名前のインデックス: コードは別のオプションで既に存在します
次の構造のmongodb
コレクションがありますterm
用語コレクションを表すJavaクラスTerm.java
私は多くの文書をterm
集めています。今、新しいフィールドがTerm.java
asに追加されました
status
にフィールドを追加した後Term.java
、コレクションに新しい用語を挿入しterm
ているときに、exceptoin を取得しています。
com.mongodb.MongoException: 名前のインデックス: コードは別のオプションで既に存在します
MongoDB バージョン: 2.6.5 および spring-data-mongodb バージョン: 1.3.2 を使用しています。