我正在使用 MongoDB 设计出租车预订服务。我的架构看起来像 -
{
"_id": {
"$oid": "621ca96e2c7e7efcfba6ce34"
},
"registration_id": "Id1",
"location": [{
"$numberDouble": "13.197827893722762"
}, {
"$numberDouble": "77.70575957707639"
}]
}
其中 location 是 Point GeoJson 数据类型。
根据客户的位置,当他提出要求时,我必须提供最近的出租车。我正在使用 $near 查询。
query = {"location": { "$near": { "$geometry": { "type": "Point", "coordinates": [event['longitude'], event['latitude']] }}}}
但是,我只需要提供属于给定区域的出租车,由 4 个坐标定义。
如果我使用 $geowithin,它提供按区域定义的点,我不会得到排序结果,如果我像上面那样使用 $near,我无法限制区域。
实现这一目标的优雅方法是什么?