我想构建一个查询来返回搜索半径范围内的用户,该搜索半径是我的半径字段及其值的较小值。换句话说,查询应该为任何一对用户的两个用户返回相同的结果。
用户文档如下所示:
{
name: "Julian",
radius: 100,
location: {
type: "Point",
coordinates: [-79.8890232, 8.5419445],
}
}
目前,我正在考虑以下几点:使用 my 搜索半径运行查询,然后遍历光标,检查位置与其他用户半径的差异,构建userIds列表:
const me = db.users.findOne(myUserId)
let nearByUserIds = []
db.users.find({
_id: {$ne:myUserId},
location: { $geoWithin: { $centerSphere: [ me.location.coordinates, me.radius] } }
}).forEach((u) => {
if (u.radius < me.radius && distanceBetween(u.location.coordinates, me.location.coordinates) < u.radius) {
nearByUserIds.push(u._id)
}
})
我的问题:这可能是在一个查询中没有forEach吗?