$を使用するか、並べ替えを行うとテーブル全体がスキャンされ、タイトルとキーワードに対するインデックスが作成されない$またはクエリを使用するときに2つのインデックスを使用するにはどうすればよいですか?
このクエリは、両方のタイトルやキーワードインデックス
db.tasks.find({$or: [{keywords: /^japan/}, {title:/^japan/}]})
これは、全表スキャンを行い、私のインデックスを使用していますを使用していますtotal_-1
db.tasks.find({$or: [{keywords: /^japan/}, {title:/^japan/}]}).sort({total:-1})
並べ替えのキーワードやタイトルに対してクエリを実行しながら、キーワードまたはタイトルのインデックスをそれぞれ使用します。
db.tasks.find({title:/^japan/}).sort({total:-1})
db.tasks.find({keywords:/^japan/}).sort({total:-1})
{total:-1、title:1}のインデックスがあり、{total:-1、title:1}でソートすると、少なくともインデックススキャンをより効率的にすることはできますか? – drogon
@drogon何でフィルタリングしていますか?そこに 'find()'節がありますか? JIRAのバグはソートに '$ or'節を使うことに非常に特有です。 –