如何解决如何解释 mongo Explain 的结果并改进地理空间查询?
{
"vechicleDetails": {
"location": {
"type": "Point","coordinate": [78.00,-40] //longitude,latitude
},"city": "New Delhi"
},"searchPriority": 4,"isLive": true,"vehicleCondition": "USED","dateOfGoingLive": ISODate()
}
还有很多其他字段,但我省略了它们,因为它们与这个问题无关。
db.vehicleinventories_latlong.find({ $query: {isLive: false,vehicleCondition: "USED","vehicleDetails.city": {$in: ["New Delhi","Delhi","Gurugram"]},"vehicleDetails.location": { $nearSphere: { $geometry: { type: "Point",coordinates: [ 77.2,28.6 ] },$maxdistance: 100 * 1000 } }},$orderby: {searchPriority: -1,dateOfGoingLive: -1} })
- isLive:假
- 车辆状况:“使用”
- vehicleDetails.city 是以下值之一:新德里、德里、古尔格拉姆、
- vehicleDetails.location 位于 [ 77.2,28.6 ] 半径 100 公里内(经度、纬度按此顺序)
我希望结果首先按距 [77.2,28.6] 的距离排序,然后按 searchPriority
排序,然后按 dateOfGoingLive
排序。为了使这些查询更快,我创建了一个复合索引:isLive
、vehicleCondition
、vehicleDetails.location
(2dsphere 类型)、searchPriority
和 dateOfGoingLive
。
当我执行这个 explain
命令时:
db.vehicleinventories_latlong.find({ $query: {isLive: false,dateOfGoingLive: -1} }).explain()
这只是上一个以 .explain()
结尾的查询命令。
这是我在 MongoShell 上得到的输出:
https://pastebin.com/qEvUNju0 (i have removed some parts of the output because it did not fit the 512K limit for pastebin)
它很长,我不知道如何解释这些结果。我可以看到正在使用索引,但为什么我看到这么多 vehicleDetails.location
元组数组?我的集合中目前只有 360 个文档,并且只有 15 个文档满足此查询的条件。我是否为此查询正确索引了集合?
此查询将响应网络请求而执行,该请求将询问“来自以下城市的所有已使用、已使用的车辆:新德里、德里和古尔格拉姆,首先按距新德里的距离排序,然后按搜索优先级排序,然后按出发日期排序居住”。我在查询中的 $in
子句中列出城市名称的顺序是相关的。距离必须从 $in
子句中的第一个城市开始测量。这意味着查询中的 $nearsphere
子句将包含 $in
数组中第一个城市的坐标。
在集合中,vehicleDetails.location
坐标对于属于同一城市的所有车辆都是相同的,并且我的数据库中的城市数量非常少。有了这些细节,你认为 2dsphere 索引对这个查询有帮助吗?如何更快地进行这些查询?
db.vehicleinventories_latlong.getIndexKeys()
[ { _id: 1 },{ isLive: 1,vehicleCondition: 1,'vehicleDetails.location': '2dsphere' },'vehicleDetails.location': '2dsphere',searchPriority: 1 },searchPriority: 1,dateOfGoingLive: 1 },'vehicleDetails.city': 1,searchPriority: -1,dateOfGoingLive: -1 } ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。