2015-08-15 4 views
1

Если у меня есть MongoDB, скопированный кластер в оштукатуренном ключе: «my_key». Я должен найти в сборнике документы (около 10-500 предметов) с разными my_key. Foe пример:

db.test.find ({my_key: {$ в: [1,3,5,67,45,56 ...]}})

Mongos знает, где глыбы с ' my_key ". Могут ли монгоры разделить мой запрос на небольшие запросы на точные осколки, где хранятся документы? Или mongos отправит этот запрос ко всем черепашкам?

И тот же вопрос о $ или

db.test.find ({$ или: [{my_key: 1}, {my_key: 3}, {my_key: 5} ...]})

+0

Два вопроса - одно и то же. Так в чем ваш вопрос? Разве это «рассеивание» происходит через осколки? –

+0

Нет, мой вопрос о том, сколько черепов потребуется для выполнения запроса. – dhythhsba

+0

Это смешно, потому что ваш вопрос называется * $ в VS $ или *. На что главный ответ - «нет разницы» *. –

ответ

2

У меня были тесты.

Если $ in содержит значения только из одного осколочного монгоша, он отправит запрос SINGLE_SHARD.

Если $ in содержит значения из нескольких осколков, то mongos отправит запрос SHARD_MERGE только для осколков, чем содержит необходимые данные (не весь кластер).

+0

Это то, что я вам уже сказал. «Scatter Gather» означает выходить на каждый осколок, где содержатся данные («Scatter»), а затем объединить все эти данные («Gather»). И, конечно, если все куски находятся на одном осколке, нет смысла посылать запрос запроса на осколок, который не содержит данные. –

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

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