У меня есть коллекция MongoDB, к которой я хотел бы добавить индекс.Для целей этого поста, скажем, имя коллекции Cats
.У меня есть хеш-ключ в коллекции Cats
, поэтому, если вы сделаете db.cats.findOne();
, он будет выглядеть следующим образом:
> db.cats.findOne();
{
"_id" : ObjectId("4f248f8ae4b0b775c9eb002d"),
"metaData" : {
"type" : "cute",
"id" : "4ed3b6c599114b488be52bc3"
},
....
}
Я очень часто запрашиваю (используя Mongoid) что-то вроде этого:
Cat.first(:conditions => { "metaData.id" => an_id }
Мне бы очень хотелось использовать здесь преимущества индексов, но я не совсем уверен, должен ли я индексировать все метаданные или просто metaData.id (явыполнять запросы к идентификатору (и очень часто).
Хотелось бы найти решение этой проблемы, потому что я думаю, что могу значительно ускорить запросы, если я сделаю здесь правильные действия.Кроме того, это уникальный индекс.
также метаданные не являются встроенным документом.у него нет собственной коллекции.это просто хеш с отображением 1: 1 в каждом объекте cat.