2012-03-04 6 views

Répondre

4

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 
+0

Mais l'adresse n'est pas un document incorporé. C'est un champ de hachage simple. –

+0

@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é. –

Questions connexes