1

以下のように言及されているmongoコレクションがあると仮定しましょう

db.test.findOne() { "_id" : ObjectId("52d0313dc62b629cfabe22ff"), "a" : 1, "b" : 1, "c" : 1 }

このコレクションには 100 万件以上のレコードがあります。

ここで、フィールド "a" が 1000 より大きく、"b" フィールドが 9000 より小さい条件を持つレコードを見つけたい場合、mongo クエリは次のようになります。

db.test.find({'a':{'$gt':1000}, 'b':{'$lt': 9000}}, {'a':1, 'c':1}) と上記の検索を高速化します。「a」および「b」フィールドに複合インデックスを既に適用しています。上記のクエリで使用されています..

ここで、お気づきのように、すべてのコレクションには、主キーの「_ id _」フィールドにデフォルトのインデックスが付属しています。

上記のmongoクエリはデフォルトのインデックス「_ id _」を使用していますか? はいの場合、どのように?そうでない場合は、なぜですか?

ありがとうございます

4

1 に答える 1

2

いいえ、mongo はクエリで _id のデフォルト インデックスを使用しません。これは、_id が条件でもクエリの並べ替えでも発生しないためです。

于 2014-01-11T10:03:37.760 に答える