使用当前文档

时间:2016-10-11 04:17:37

标签: mongodb geospatial

我想构建一个查询来返回搜索半径范围内的用户,该搜索半径是我的半径字段及其值的较小值。换句话说,查询应该为任何一对用户的两个用户返回相同的结果。

用户文档如下所示:

{
  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吗?

0 个答案:

没有答案