0

如何在 play morphia 中设置 2D 索引?

例子:

db.places.ensureIndex( { loc : "2d" } )

http://www.mongodb.org/display/DOCS/Geospatial+Indexing

4

2 回答 2

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 中执行此操作。这是一次性的事情。

于 2012-06-30T02:18:22.670 回答
0

再补充一点,几年后:

@Indexes(
        @Index(fields=@Field( value = "location", type= IndexType.GEO2DSPHERE))
)

@Entity类上(如果调用了持有 GeoPoint 的成员location)为球形地理空间查询生成正确的索引。

不要忘记将.near()方法的第四个参数设置为true(球形)。

此外,您应该确保通过datastore.ensureIndexes()在查询之前简单地调用来生成索引。

于 2019-06-02T00:45:12.947 回答