我有一个让我疯狂的问题!
我需要在PHP中翻译以下Mongo查询:
db.mycollection.find({$or: [ {'field.a': 45.4689, 'field.b': 9.18103}, {'field.a' : 40.71455, 'field.b': -74.007124} ]})
它完全可以从shell中运行。
我认为查询应该按照以下方式转换为PHP(var_dump):
Array
(
[$or] => Array
(
[0] => Array
(
[field.a] => 45.468945
[field.b] => 9.18103
)
[1] => Array
(
[field.a] => 40.71455
[field.b] => -74.007124
)
)
)
但我在PHP中没有结果!
为什么呢? 怎么了? 什么是正确的语法?
谢谢!
答案 0 :(得分:3)
你的语法对我来说似乎很好,我认为主要的问题是你使用的浮点数并不像你想象的那么准确 - 特别是如果你自己混淆了45.4689和45.468945。要直接比较浮点数,您应该总是添加一个小的模糊因子。
在这种情况下,您似乎使用坐标?如果是这样的话,我建议你:
这应该是一种更好的扫描点的方法。你必须运行两次查询,因为geoNear命令不能执行$或。
如果你只有一组离散的点(就像你的评论似乎表明的那样),那么我建议不要查询浮点数,而只是添加一个命名城市的字段。