在查询mongodb数据库时,是否可以在$或语句中执行$ near或$ geoNear等多个地理查询?
我总是收到错误“异常:$或者可能不包含'特殊'查询”
经过一段谷歌搜索后,我发现问题https://jira.mongodb.org/browse/SERVER-3984已关闭并标记为“已修复”。
对我来说,运行多个地理查询时似乎仍然存在错误。 这是我的测试代码:
db.entry.find({
$or: [
{
"address.geo": {
$near: {
$geometry : {
type : "Point" ,
coordinates : [ 9.7043 , 52.3019 ] },
$maxDistance : 50000
}
}
},
{
"address.geo": {
$near: {
$geometry : {
type : "Point" ,
coordinates : [ 9.6043 , 52.1019 ] },
$maxDistance : 50000
}
}
}
]
}).count();
结果就是这样:
uncaught exception: count failed: {
"errmsg" : "exception: $or may not contain 'special' query",
"code" : 13291,
"ok" : 0
}
答案 0 :(得分:4)
您不能在$near
子句和$nearSphere
子句中使用$or
(或$and
)。对获取数据执行两个查询
答案 1 :(得分:3)
你不能在$或子句中使用$ near(或$ nearSphere):
$或和GeoSpatial查询
在版本2.6中更改。
$或支持具有以下例外的地理空间子句 near子句(near子句包括$ nearSphere和$ near)。 $或不能 包含near子句和任何其他子句。
但是,您可以在$或中使用其他地理空间条款,因此,如果您可以重构查询以使用其他地理空间运算符,则可以使用$或。