如何在 play morphia 中设置 2D 索引?
例子:
db.places.ensureIndex( { loc : "2d" } )
如何在 play morphia 中设置 2D 索引?
例子:
db.places.ensureIndex( { loc : "2d" } )
我假设你的意思是玩 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 中执行此操作。这是一次性的事情。
再补充一点,几年后:
@Indexes(
@Index(fields=@Field( value = "location", type= IndexType.GEO2DSPHERE))
)
在@Entity
类上(如果调用了持有 GeoPoint 的成员location
)为球形地理空间查询生成正确的索引。
不要忘记将.near()
方法的第四个参数设置为true
(球形)。
此外,您应该确保通过datastore.ensureIndexes()
在查询之前简单地调用来生成索引。