2011-02-17 5 views
0

J'essaie de créer une clé composée comme champ "_id", qui contient des informations géographiques ainsi que d'autres attributs. Il ressemble à:Pouvez-vous créer plusieurs index sur un seul champ dans Mongo? A quoi cela ressemble-t-il?

{_id: {lat: 50, lon: 50, name: "some name"}} 

Après avoir créé le document, mongo attribue un index par défaut, et ignore ma commande

db.coll.ensureIndex(_id: "2d") 

Est-il possible de le faire, je peux avoir mon index de champ _id -Possible à la fois par le géo-index et l'index régulier?

Répondre

1

Vous avez deux options ici. Les deux d'entre eux ont besoin d'un changement dans votre schéma:

  1. Faire _id un hachage unique et mettre vos coordonnées dans un champ distinct avec un indice 2d:

    {_id: « ObjectId standard ou votre hachage », nom: "un nom", loc: [50, 50]}

  2. Si vous voulez vraiment _id être le seul champ (je ne recommanderais pas cela):

    {_id: {name: " un nom ", loc: [50, 50]}}

    db.coll.ensureIndex ({ '_ id.loc': '2d'})

0

De la documentation MongoDB:

Les utilisateurs sont invités à utiliser leurs propres conventions pour créer ids ; la valeur _id peut être de n'importe quel type, autre que les tableaux, tant qu'il s'agit d'un unique. Les tableaux ne sont pas autorisés parce qu'ils sont des multi-clés.

Vous devrez également vous assurer que ceux-ci sont uniques aussi. Aussi, cela gâchera certaines choses qui présument que vous avez un identifiant BSON

Je voudrais simplement indexer ces champs par eux-mêmes et faire un index composé.

http://www.mongodb.org/display/DOCS/Object+IDs

Questions connexes