首页 > 解决方案 > mongodb中用户之间的自定义搜索

问题描述

数据

location:{
    type: String ,
    required: true
}

HTML 注册

<label>location*</label>
<select name="location" class="long" id="location">
    <label class="optional">location</label>
    <option value="blah">blah</option>
    <option value="blahh">blahh</option>
    <option value="blahh">blahh</option>
</select>

我希望用户在同一位置看到其他用户的个人资料(作为建议),所以我在注册表中添加位置选择所以我怎样才能从他的数据库中提取他的位置并将其作为条件find({})

  • 这可能吗 ?
  • 或者有没有更好或更实用的方法来做到这一点?

标签: javascriptnode.jsmongodb

解决方案


我不确定我是否完全理解你的问题,但我会根据我对问题的理解来回答你。如果您希望能够计算用户位置之间的距离,那么您就是这样做的。

  1. 将用户的位置作为字段存储在用户文档中。

    {
      id:1,
      name: John,
      coordinates:[latitude, longitude]
    }
    
  2. 然后,在您的服务器上,您可以使用 $geoNear 管道让所有用户靠近,otherUsersCoordinates这也是一个列表 [纬度,经度]。

    db.users.aggregate([
     {
      $geoNear:{
      near: {coordinates: otherUsersCoordinates},
      distanceField: "distance.calculated",
      maxDistance: radius,
      num: parseInt(limit),
      spherical: true
     }
    ]);
    

如果这是您要问的问题,答案是肯定的,上述方法将为您提供所有最近的用户。然后,您可以根据需要使用结果来填充 HTML。


推荐阅读