2014-01-10 5 views
1

Предположим, у нас есть коллекция Монго упоминается нижеИспользуется ли по умолчанию _id_ index для mongoquery?

db.test.findOne() { "_id": ObjectId ("52d0313dc62b629cfabe22ff"), "а": 1, "Ъ": 1, «с ": 1}

и эта коллекция насчитывает более миллиона записей.

теперь, если я хочу, чтобы выяснить, записи с условием в поле «в» более чем 1000 и поле «б» меньше, чем 9000 тогда мой Монго запрос может быть как ..

db.test.find ({'a': {'$ gt': 1000}, 'b': {'$ lt': 9000}}, {'a': 1, 'c': 1}) и сделать более быстрый поиск быстрее , я уже применил составной индекс на поле «a» & «b». и использовался выше запрос ..

сейчас, здесь, как вы должны знать, все коллекции поставляются с индексом по умолчанию на «_ ид _» поле первичного ключа.

делает мою выше Монго запрос индекса используется по умолчанию «_ идентификатора _»? если да, то как? и если нет, то почему?

благодарит вас javaamtho

+0

Вы можете уточнить свой вопрос? Вы уже сказали, что запрос использует составной индекс, который вы создали, а не индекс на '_id'. – JohnnyHK

+1

Используйте 'explain', чтобы определить, какие индексы используются. Индекс '_id' не будет использоваться, если он не указан в вашем запросе. – WiredPrairie

+0

@JohnnyHK yes .using explain(), я могу видеть, что мой составной индекс используется, но делает ли mongo значение индекса _id_ по умолчанию для какой-либо цели? как я могу увидеть более двух индексов, если мой двигатель монго использовал его внутри? мой вопрос сложный, но как вы его получите сейчас. – javaamtho

ответ

2

Нет, Монго не использует индекс по умолчанию на _id с вашим запросом, потому что _id не происходит в условиях, ни в сортировке вашего запроса.

+1

Спасибо .. в вопросе сортировки, например, db.test.find ({'a': {'$ gt': 1000}, 'b': {'$ lt': 9000}}, {'a': 1, 'c': 1}). sort ({b: 1}) .. это не используется? – javaamtho

+2

Нет, индекс по умолчанию используется, только если вы используете «_id» либо в состоянии, либо в объекте сортировки. То есть если вы ищете документ с определенным _id: db.test.find ({_ id: my_certain_id}) будет использовать индекс по умолчанию. – heinob

+1

Если вы считаете, что мой ответ правильный, пожалуйста, примите его. Вы можете прочитать больше здесь: http://docs.mongodb.org/manual/administration/indexes/ – heinob

 Смежные вопросы

  • Нет связанных вопросов^_^