Как я могу индексировать хеш-поля в MongoDB или Mongoid? - PullRequest
2 голосов
/ 04 марта 2012

У меня есть следующий документ на монго:

{
  _id: 'someid',
  name: 'John Doe',
  address: {
    city: 'Osaka',
    country: 'Japan'
  }
}

Как мне индексировать по городу и стране?

1 Ответ

4 голосов
/ 04 марта 2012

Из документации MongoDB :

Индексирование по встроенным полям

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

[...]

db.people.ensureIndex( { "address.zipcode": 1 } )

Mongoid использует те же Точечные обозначения :

Вы также можете определять индексы для встроенных полей документа.

class Person
  include Mongoid::Document
  embeds_many :addresses
  index "addresses.street"
end

Итак, вы хотите что-токак это:

class C
  include Mongoid::Document
  index 'address.city'
  index 'address.country'
  #...
end
...