问题描述
该集合具有两个地理字段:fromLocation和toLocation。但是只允许一个Geonear。 该集合看起来像:
...............
fromLocation: {
type: { type: String,default: "Point" },coordinates: [Number],},toLocation: {
type: { type: String,.........................................
请给出示例代码,如何使用Geonear通过两个字段进行搜索。 我的一次字段搜索代码:
[
{
'$geoNear': {
near: [Object],key: 'fromLocation',distanceField: 'fromdistance',spherical: true
}
},{
'$match': {
status: 2,'from.data.city_fias_id': '27c5bc66-61bf-4a17-b0cd-ca0eb64192d6','to.data.city_fias_id': '27c5bc66-61bf-4a17-b0cd-ca0eb64192d6','car.paymentInfo.id': [Object],budget: [Object]
}
},{
'$lookup': {
from: 'users',localField: 'autor',foreignField: '_id',as: 'autor'
}
},{ '$unwind': '$autor' },{ '$addFields': { sortBudget: [Object] } },{ '$sort': { sortBudget: 1 } },{ '$group': { _id: null,total: [Object],results: [Object] } },{ '$project': { total: 1,results: [Object] } }
]
解决方法
距离计算非常简单。对于更具选择性的条件,请使用$ geoNear来利用地理位置索引,对于第二个条件,请使用$ match和$ expr。