如何在play morphia中设置2D索引?
示例:
db.places.ensureIndex( { loc : "2d" } )
答案 0 :(得分:1)
我认为你的意思是玩1.2.x。
您无法通过@Indexed注释执行此操作,似乎:http://code.google.com/p/morphia/issues/detail?id=290
你可以用这个有点hacky [未经测试]的代码来实现:
MorphiaPlugin.ds()
.getMongo()
.getDB('dbname')
.getCollection('places')
.ensureIndex(BasicDBObject(loc, "2d"));
但是您可能只想从shell中执行此操作,如您所示。这是一次性的事情。
答案 1 :(得分:0)
几年后,只需补充一下:
@Indexes(
@Index(fields=@Field( value = "location", type= IndexType.GEO2DSPHERE))
)
在@Entity
类上的(如果持有GeoPoint的成员称为location
)将为球形地理空间查询生成正确的索引。
不要忘记将.near()
方法的第4个参数设置为true
(球形)。
此外,您还应确保在查询之前仅调用datastore.ensureIndexes()
即可生成索引。