0

Mongo データベースの構築については、ヘルプを使用できます。国 ID を保存し、クエリを実行して、一致する国を含むドキュメントを返す必要があります。ID は 6 ~ 10 文字の長さの文字列であると想定します。

2 つのオプション:

1) 国 ID を区切り文字で区切られた 1 つの巨大な文字列として保存します。

(例: /)。Ex: "IDIDID1/IDIDID2/IDIDID3/IDIDID4/IDIDID5".

2) ID を配列に格納します。

 Ex: ["IDIDID1", "IDIDID2", "IDIDID3", "IDIDID4", "IDIDID5"].

Find all documents containing country ID IDIDID3." "のようなクエリを最適化したい

オプション 1 では、RegEx を使用してドキュメントを照会する予定です (例: /IDIDID3/)。

オプション 2 では、標準$in演算子を使用します。

読み取りパフォーマンスが向上するオプションはどれですか?

文字列にインデックスを付けることができるため、文字列アプローチを使用するとパフォーマンスが向上しますか?

MongoMapper を使用しています。

4

1 に答える 1

1

MongDBマニュアルより

$regex can only use an index efficiently when the regular expression 
has an anchor for the beginning (i.e. ^) of a string and is a case-sensitive match.
Additionally, while /^a/, /^a.*/, and /^a.*$/ match equivalent strings, 
they have different performance characteristics. 
All of these expressions use an index if an appropriate index exists; 
however, /^a.*/, and /^a.*$/ are slower. /^a/ can stop scanning after matching the prefix.

したがって、配列とマルチキー インデックスを使用することは、パフォーマンスの点でより理にかなっています

于 2013-03-26T10:10:12.157 に答える