Mongodb搜索java中的嵌套字段

时间:2014-05-07 03:53:06

标签: java mongodb morphia

假设我有一个名为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();

1 个答案:

答案 0 :(得分:1)

你所拥有的东西不是mongo中的嵌套字段。地址存储在其自己的集合中,并且引用存储在包含该地址的id的人员集合中。所以,从本质上讲,没有嵌套的字段pos。你在那里尝试做的是隐式连接,mongodb不支持连接。您的两个解决方案(可能还有其他解决方案)是执行两个查询(1个用于查找地址,另一个用于查找这些用户)或在地址上使用@Embedded,以便将地址文档嵌入到存储在mongodb中的Person文档中。如果您使用选项2,则可以在查询中使用address.pos引用该字段。