我正在尝试应用不同的过滤器和附近的过滤器,但用户也可以跳过所有其他过滤器,只应用附近的过滤器。如果用户也选择标签或美食过滤器,我会得到准确的结果。但是当用户跳过两者时,它会抛出异常。下面是我的代码
const query = [];
if (cuisines) {
const culinaryOptions = {
culinaryOptions: { $in: cuisines },
};
query.push(culinaryOptions);
}
if (tags) {
const tag = {
tags: { $in: tags },
};
query.push(tag);
}
if (nearest) {
maxDistance = 10;
sort = -1;
}
console.log(query);
return this.restaurantModel.aggregate([
{
$geoNear: {
near: {
type: 'Point',
coordinates: [parseFloat(longitude), parseFloat(latitude)],
},
distanceField: 'distanceFromMe',
maxDistance: maxDistance ?? 100 * METERS_PER_MILE, //!*** distance in meters ***!//
distanceMultiplier: 1 / 1609.34,
spherical: true,
},
},
{
$match: {
$or: query,
},
},
{ $unset: ['verificationCode', 'uniqueCode'] },
{ $sort: { location: sort ?? 1 } },
]);
} 如果用户跳过所有其他过滤器
,如何只获得附近的餐馆