环回:对象子字段附近的过滤器

时间:2016-11-09 13:34:27

标签: mongodb loopbackjs strongloop

我有一个这样的模型:

{
    name: 'My Favorite Shop',
    address:{
         location: [12.534 /* longitude */ ,41.9221/* latitude */]
    }
}

文档存储在mongodb数据库中,因此我想查询它们:

//assuming shops to be the name of the containing model
app.models.shops.find({
    where: {
        'address.location': {lat: 13, lng: 40}
    }
}, callback);

问题是此查询不会检索任何结果。我想这是因为location字段的性质,它嵌套在address中,但我无法验证。

有什么想法吗?

由于

更新: 它出来我忘了在数据源定义中设置enableGeoIndexing属性。完成后,查询将检索以下错误:

 {"name":"MongoError","message":"Unable to execute query: error processing query: ns=acidata-dev.pos limit=25 skip=0\nTree: GEONEAR  field=address.location maxdist=1.79769e+308 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query","$err":"Unable to execute query: error processing query: ns=acidata-dev.pos limit=25 skip=0\nTree: GEONEAR  field=address.location maxdist=1.79769e+308 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query","code":17007}

1 个答案:

答案 0 :(得分:1)

我终于找到了问题。在2d字段上应用了address.location索引,但Loopback(似乎)仅支持2dSphere索引上的地理查询。因此,我通过在此类字段上添加2dSphere索引来解决。