Javascript 使用mongodb中的一些其他地理空间查询模拟$near
因此,自从mongodb 2.6以来,我不能用$near做$or$和$and操作,有什么方法可以模仿吗Javascript 使用mongodb中的一些其他地理空间查询模拟$near,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,因此,自从mongodb 2.6以来,我不能用$near做$or$和$and操作,有什么方法可以模仿吗 db.places.find({$or: [{loc: {$near: [50,50]}}, {rating: {$gt: 3}}]) 由于上面的代码不可能,我可以用其他一些查询(如$geointen或$geometry)替换$near以获得相同或类似的结果吗 编辑: 我发现 db.places.find({$or: [{loc: {$geoWithin: {$centerSphere: [
db.places.find({$or: [{loc: {$near: [50,50]}}, {rating: {$gt: 3}}])
由于上面的代码不可能,我可以用其他一些查询(如$geointen或$geometry)替换$near以获得相同或类似的结果吗
编辑:
我发现
db.places.find({$or: [{loc: {$geoWithin: {$centerSphere: [50,50], 100}}}, {rating: {$gt: 3}}])
如果我在第一个示例中使用$maxDistance,那么这是否相同呢?好的,
$geoinsin
和$centreSphere
相对来说是相同的(正如您刚才提到的),但区别当然是没有可用距离的“排序”或投影选项。您始终可以运行两个查询并合并结果。执行此操作的方法因语言实现而异。此外,由于查询参数不是顶级运算符,因此不允许仅使用$和:[]
表单。MongoDB中的所有常规查询条件都已经是“and”语句,并且是允许的。您应该很少需要第一个表单谢谢您的回答mateWell a$geointen
和$centreSphere
相对来说是相同的(正如您刚才提到的),但区别当然是没有可用距离的“排序”或投影选项。您始终可以运行两个查询并合并结果。执行此操作的方法因语言实现而异。此外,由于查询参数不是顶级运算符,因此不允许仅使用$和:[]
表单。MongoDB中的所有常规查询条件都已经是“and”语句,并且是允许的。你应该很少需要第一个表单谢谢你的回答,伙计