我正在使用Java系统,其中一部分将表达式从内部表示呈现到MongoDb查询.我渲染"AND"表达式的方式与呈现"OR"表达式的方式相同.因此,如果我有一个类似"category ='GIBBLY'和active = true"的表达式,它将呈现为:
{$and:[{"category":"GIBBLY"},{"active":true}]}
我知道在这种情况下这不是绝对必要的.我想不通的是,是否有过其中$的情况下,是必要的(在我的系统中,经常被嵌套AND和OR,如果说有什么区别).
这对我来说是一个问题的原因是$和运算符似乎无法进行地理空间查询.像这样的查询:
{"$and":[{"loc":{"$nearSphere":[-79.75 , 43.5], "$maxDistance":0.00156787}}, {"active":true}]}
失败,出现"无法找到特殊索引:2d"错误.如果我重新执行查询:
{"loc":{"$nearSphere":[-79.75 , 43.5], "$maxDistance":0.00156787}, "active":true}
它工作正常.
我尝试做了一些研究,并在mongodb-user组中找到了对该问题的讨论,该组讨论了地理空间查询中的复合索引.
我找到的所有信息都没有真正解释为什么确切地说$并且不适用于地理空间查询.我的数据库中根本没有定义复合索引,非$和查询工作,所以我不确定$和索引的工作方式不同.
总结一下,我的问题是:
是和必要的,如果是的话,在什么样的情况下?
$和与索引的隐式表示有某些基本方式不同吗?
为什么$和$并不适用于地理空间查询?
| 归档时间: |
|
| 查看次数: |
3769 次 |
| 最近记录: |