我知道MongoDB不支持geospatial index
和$geoWithin
同时进行搜索,如here所示。但我看到了使用$near
代替$geoWithin
的建议。我将$box geometry
与$geoWithin
一起使用,但不会产生任何结果。但是,当我使用$center
和{{1}}几何时,它确实有效。可能有什么不对?它不受支持吗?这是一个错误吗?当然,如果我单独应用这些查询条件(文本和地理空间),那一切都有效。
答案 0 :(得分:1)
尽管在文档中多次提到$geoWithin
不需要地理空间索引。我无法使用$box
运算符。
这不起作用:
db.getCollection('Article').find({
"coordinates": {
$geoWithin: {
$box: [
[13.2680001, 49.805786],
[13.4758465, 49.6776084]
]
}
},
$text: {
$search: "Lorem ipsum"
}
})
非常简单的解决方法是使用$gte
和$lte
运算符。
工作解决方案:
db.getCollection('Article').find({
"coordinates.longitude": { $gte: 13.2680001, $lte: 13.4758465 },
"coordinates.latitude": { $gte: 49.6776084, $lte: 49.805786 },
$text: {
$search: "Lorem ipsum"
}
})
但是,我不确定此类查询的执行情况。