De l'MongoDB documentation:
indexation sur les champs incorporés
Vous pouvez créer des index sur les champs intégrés dans les sous-documents, tout comme vous pouvez indexer les champs de haut niveau dans les documents. [...] Au lieu de cela, les index sur les champs incorporés vous permettent d'utiliser une "notation pointée" pour introspecter dans des sous-documents.
[...]
db.people.ensureIndex({ "address.zipcode": 1 })
MongoId utilise le même Dot Notation:
Vous pouvez définir des index sur les champs de documents intégrés ainsi.
class Person
include Mongoid::Document
embeds_many :addresses
index "addresses.street"
end
Donc, vous voulez quelque chose comme ceci:
class C
include Mongoid::Document
index 'address.city'
index 'address.country'
#...
end
Mais l'adresse n'est pas un document incorporé. C'est un champ de hachage simple. –
@CoffeeBite: L'avez-vous essayé? J'ai mis en place une collection rapide qui correspond à vos données d'échantillon, fait un 'ensureIndex' sur' address.city', puis 'db.x.find ({'address.city': 'c'}). Explain()' indique '" BtreeCursor address.city_1 "' est utilisé pour la requête et cela indique que l'index est utilisé. –