java中地理空间字段的2dsphere索引的Spring mongodb注释......?
Posted
技术标签:
【中文标题】java中地理空间字段的2dsphere索引的Spring mongodb注释......?【英文标题】:Spring mongodb annotation for 2dsphere index for a geospatial field in java...? 【发布时间】:2017-12-01 15:53:17 【问题描述】:@JsonSerialize
@Document(collection = "fence")
@CompoundIndexes(
@CompoundIndex(name = "loc_groupId_idx",
def = " 'loc': 2dsphere, 'groups.groupId': 1 ",
unique = false) )
public class GeofenceMongoVO
public GeofenceMongoVO()
@Id
private String fenceId;
@Field
private Long customerId;
@Field
private String fenceName;
@Field
private Byte type;
这就是我尝试确保地理空间字段和子文档(groupId)字段的复合索引的方式。但不幸的是,这不起作用。有没有一种方法可以通过注释确保 java 代码中的 2dsphere 索引?
【问题讨论】:
你有一个错字,这就是它不起作用的原因。应该是" 'loc': '2dsphere', 'groups.groupId': 1 "
,并在“2dsphere”周围加上引号''
。
【参考方案1】:
我不确定是否可以使用注释来完成,但我发现了一篇博客文章 here,他们在其中使用了 ensureIndex。类似的东西
@Autowired
MongoTemplate template;
public void setupIndex()
template.indexOps(Location.class).ensureIndex( new GeospatialIndex("position") );
【讨论】:
【参考方案2】:从 Spring Data MongoDB 1.10.10.RELEASE 开始,您可以注释任何字段,无论是在文档根目录还是在子文档中:
@GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
private GeoJsonPoint myGeometry;
【讨论】:
不能更准确,应该更新为好的答案!以上是关于java中地理空间字段的2dsphere索引的Spring mongodb注释......?的主要内容,如果未能解决你的问题,请参考以下文章
MongoError:找不到任何特殊索引:2d(需要索引),2dsphere(需要索引)
2dsphere vs 2d index:哪个“更好”/更快?