使用$lt和$gt的MongoDB数字精度
在使用(我假设)不同精度的查询时,我很难让MongoDB返回文档 以下是my DB中的示例记录:使用$lt和$gt的MongoDB数字精度,mongodb,monk,Mongodb,Monk,在使用(我假设)不同精度的查询时,我很难让MongoDB返回文档 以下是my DB中的示例记录: {"P_Latitude": "32.896272727272", "P_Longitude": "-109.8293454545"} 下面是一个不返回任何文档的示例查询: { "P_Latitude": { "$gt": "32.097473448554915", "$lt": "33.45585495144508" }, "P_Longi
{"P_Latitude": "32.896272727272", "P_Longitude": "-109.8293454545"}
下面是一个不返回任何文档的示例查询:
{
"P_Latitude": {
"$gt": "32.097473448554915",
"$lt": "33.45585495144508"
},
"P_Longitude": {
"$lt": "-110.0001001",
"$gt": "-99.9999999"
}
}
但是,当我将最后一个$gt更改为大于-100的数字时,它会工作…如:
{
"P_Latitude": {
"$gt": "32.097473448554915",
"$lt": "33.45585495144508"
},
"P_Longitude": {
"$lt": "-110.0001001",
"$gt": "-100.9999999"
}
}
这是精度问题还是其他问题?它在shell和使用Monk驱动程序中的行为相同
谢谢 问题是您将
p_纬度
和p_经度
值存储为字符串而不是数字。因此,比较使用的是数字顺序,而不是数字顺序
您的文档应该如下所示:
{"P_Latitude": 32.896272727272, "P_Longitude": -109.8293454545}
然后像这样询问:
{
"P_Latitude": {
"$gt": 32.097473448554915,
"$lt": 33.45585495144508
},
"P_Longitude": {
"$gt": -110.0001001,
"$lt": -99.9999999
}
}
成功了!谢谢虽然为了使查询现在能够工作,我需要切换经度的$lt和$gt:`“P_经度”:{“$gt”:-110.0001001,“$lt”:-99.999999}`@MartinSpriggs Good point,edited。另外,一定要查看可用的,以使按位置查询更有效。