2013-07-11 3 views
0

J'ai un modèle qui stocke les coordonnées et les coordonnées sont indexéscoordonne l'indexation dans MongoDB ne fonctionne pas

class Place 
    include Mongoid::Document 
    include Mongoid::Spacial::Document 

    field :coordinates, type: Array, spacial: true 

    index({ coordinates: "2d" }, { unique: true }) 
end 

Cependant, chaque fois que je sauve un endroit avec un ensemble de coordonnées créent alors une autre, les deux coordonnées sont enregistrées. Cela m'amène à croire que l'indexation des coordonnées ne fonctionne pas. Qu'est-ce qui me manque ici et comment puis-je le réparer?

Un exemple ci-dessous.

place = Place.new(coordinates: [50, 50]) 

place.save # returns true in console 

place2 = Place.new(coordinates: [50, 50]) 

place2.save # returns true in console 

# Thus I have two place records with the same exact coordinates, something I don't want 
+0

Pouvez-vous donner un exemple? – innoSPG

+0

Mettez le dans ma question. – jason328

Répondre

1

Les types d'index 2d et 2dsphere ne pas respecter la contrainte uniques du tout. J'ai créé un problème de DOCS de le préciser dans la documentation: https://jira.mongodb.org/browse/DOCS-1701

+0

Merci beaucoup. J'espère que c'est actuellement le cas. Sur d'autres recherches, il ressemble à MongoId, l'ODM j'utilise nécessite une tâche de coupe pour effectuer l'indexation, cependant, il n'y a pas d'explication sur la façon de faire une telle chose pour une application Sinatra. Merci pour la réponse et aide à signaler le problème à MongoDB. – jason328

Questions connexes