私は約 8000 万のドキュメントのコレクションを持っており、それぞれがtags
フィールドにタグの配列を格納しています。
{text: "blah blah blah...", tags: ["car", "auto", "automobile"]}
フィールドtags
はインデックス化されているため、当然、このようなクエリはほぼ瞬時に実行されます。
db.documents.find({tags:"car"})
ただし、次のクエリはすべて非常に遅く、完了するまでに数分かかります。
db.documents.find({tags:{$all:["car","phone"]}})
db.documents.find({tags:{$in:["car","auto"]}})
配列に項目が 1 つしかない場合でも、問題は解決しません。
db.documents.find({tags:{$all:["car"]}}) //very slow too
tags
$all と $inはインデックス化されているため、非常に高速に動作できるはずだと思っていましたが、そうではないようです。なんで?