1

ユーザー コレクションがある場合:

{
   name: "sue"
   age:  27
   groups: ["football", "hockey"]
}
...

db.users.find( { groups: 'hockey' } )

mongodb は各ドキュメントの各リスト要素にアクセスする必要がありますか?

より一般的に言えば、運用の時間コストに関するガイドはありますか?

4

1 に答える 1

2

users コレクションにインデックスを作成できます。

db.users.ensureIndex( {"groups" : 1} )

これを行うと、検索を実行したときに、mongodb はグループ フィールドの各要素にアクセスしなくなります。使用する

  db.users.find( { groups: 'hockey' } ).explain()

使用されているインデックスを表示します。

クエリによっては、ユーザー レコードを取得する必要がまったくない場合もあります。例えば、

db.users.count( { groups: "hockey"} )

は「カバーされたクエリ」であり、インデックスのみを使用して回答できます。詳細については、 http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/を参照してください。

于 2013-09-05T16:50:32.723 に答える