В MongoDB, если бы я хранить массив (скажем ["red", "blue"]
) в поле "color"
, это индекс "red"
и "blue"
, так что я мог бы запросить "red"
, например, или же в {"red", "blue"}
сделать композитный индекс?Как массивы индексов MongoDB?
57
A
ответ
76
Когда дело доходит до индексирования массивов, MongoDB индексирует каждое значение массива, чтобы вы могли запрашивать отдельные элементы, такие как «красный». Например:
> db.col1.save({'colors': ['red','blue']})
> db.col1.ensureIndex({'colors':1})
> db.col1.find({'colors': 'red'})
{ "_id" : ObjectId("4ccc78f97cf9bdc2a2e54ee9"), "colors" : [ "red", "blue" ] }
> db.col1.find({'colors': 'blue'})
{ "_id" : ObjectId("4ccc78f97cf9bdc2a2e54ee9"), "colors" : [ "red", "blue" ] }
Для получения дополнительной информации, ознакомьтесь с документацией MongoDB на Multikeys: http://www.mongodb.org/display/DOCS/Multikeys
возможно искать для частичного массива, как для («цвета»: [ «красный», «синий», «зеленый»]), можно ли найти поиск («цвета»: [«красный», «синий»]), или я должен делать их индивидуально? –
@GauravAbbi - Я думаю, что работает, но mongo будет использовать индекс только для поиска первого ключа массива. После этого он сканирует этот набор документов для тех, которые соответствуют остальным ключам. – Mnebuerquo
Какие соображения будут приняты, чтобы использовать мультикидные индексы, связанные с составным индексом. например индекс, описывающий основной цвет и вторичный цвет? –