假设我有一个名为Person的表格如下:
class Person{
ObjectId id;
String name;
@Reference
Address adr;
}
class Address{
Position pos;
}
class Position{
double longitude;
double latitude;
}
如何归还球体内的所有人? 对球体的查询是:
DBObject queryOnVenue = QueryBuilder.start("pos").withinCenterSphere(longitude, latitude, radiusInMeters / HandlersConfiguration.EARTH_RADIUS).get();
答案 0 :(得分:1)
你所拥有的东西不是mongo中的嵌套字段。地址存储在其自己的集合中,并且引用存储在包含该地址的id的人员集合中。所以,从本质上讲,没有嵌套的字段pos。你在那里尝试做的是隐式连接,mongodb不支持连接。您的两个解决方案(可能还有其他解决方案)是执行两个查询(1个用于查找地址,另一个用于查找这些用户)或在地址上使用@Embedded,以便将地址文档嵌入到存储在mongodb中的Person文档中。如果您使用选项2,则可以在查询中使用address.pos引用该字段。