结合$ $框搜索与$在搜索两者都必须是有效的mongodb



我的情况:我有一个集合与地址在我的数据库,我想显示这些在谷歌地图作为标记,但只有在coördinates内显示的地图,只有当地址id是在我的列表与id,应该显示。

我有两个独立的查询,它们各自工作得很好。

// Find within ID's
db.addresses.find({
    _id : { $in: [ ObjectId("ID1"), ObjectId("ID2") ] }
})

这个查询如预期的那样返回2个具有给定id的地址。

// Find within area
db.addresses.find({
    location : { $within: { $box : [ [ 51.498761244224,4.3004231168717 ], [ 51.494099036558,4.2811004831284 ]] } }
})

该查询返回大约15个地址,其中还包括ID1的地址,该地址在给定的coördinates内。

我想将这2个查询合并为1,它只返回在给定coördinates内具有给定ID的地址。

我试了如下:

// Find within area within ids
db.addresses.find({
    $and : [
       {location : { $within: { $box : [ [ 51.498761244224,4.3004231168717 ], [ 51.494099036558,4.2811004831284 ]] } } },
       {_id : { $in: [ ObjectId("ID1"), ObjectId("ID2") ] } }
    ]
})

不返回任何行。我在等1个地址,ID1的那个。

我试着在谷歌上搜索,但我似乎找不到如何将这两个查询结合起来。

谁能告诉我我做错了什么,或者我如何才能实现我的目标?

无需使用$和操作符。不能在$和操作符中使用地理空间查询。请检查此问题。试试这个:

db.addresses.find({
       location : { $within: { $box : [ [ 51.498761244224,4.3004231168717 ], [ 51.494099036558,4.2811004831284 ]] } } ,
       _id : { $in: [ ObjectId("ID1"), ObjectId("ID2") ] } 
})

不确定上述问题是否会影响我们在这里使用的implicit and

最新更新