美文网首页js css html
MongoDB 如何实现摇一摇发现附近的人

MongoDB 如何实现摇一摇发现附近的人

作者: 岛上码农 | 来源:发表于2022-06-06 21:57 被阅读0次

前传

作为寂寞沙洲冷、单身比例高的程序猿人群,少不得拿出手机摇一摇,看看附近有没有钟意的人。那这摇一摇过程中发生了什么?


搜索附近的人.gif

毫无疑问,首先要获取你自己的位置,然后再去拿你的位置取搜寻目标。

2dsphere 球面位置索引

MongoDB 内置了2dsphere 球面索引,通过球面索引即可完成距离批量搜索。下面是测试数据:

db.location.insert([
    {name: '三里屯MM1', gender: 'female', location: {type: 'Point', coordinates: [116.458347,39.940602] }},
    {name: '西直门GG1', gender: 'male', location: {type: 'Point', coordinates: [116.361446,39.946471] }},
    {name: '东直门MM2', gender: 'female', location: {type: 'Point', coordinates: [116.440967,39.945325] }},
    {name: '天安门MM3', gender: 'female', location: {type: 'Point', coordinates: [116.403963,39.915119] }},
    {name: '三里屯MM4', gender: 'female', location: {type: 'Point', coordinates: [116.460054,39.938063] }},
    {name: '三里屯MM5', gender: 'female', location: {type: 'Point', coordinates: [116.461082,39.944209] }},
    {name: '三里屯MM6', gender: 'female', location: {type: 'Point', coordinates: [116.461065,39.939399] }}
 ]);

假设你此时孤身一人走在北京三里屯大街上,形单影只,与那热闹非凡的夜生活显得格格不入……

形单影只.jpg

为了打发这孤单寂寞的时光,你掏出了手机,准备摇一摇找个人来陪伴。突然,一个声音在你耳边响起:“你需要先创建一个索引”。
没错!需有索引会更快速,程序猿讲究的就是效率!,于是,你写下了下面的指令:

 db.location.createIndex({location: '2dsphere'});

“这还不够,还需要往四周搜索一下,距离不要超过1公里!”

db.location.find(
  {
    location: {
      $near: {
        $geometry: {
          type: 'Point', coordinates: [116.459958,39.937193]
        }, 
        $maxDistance: 1000
      }
    }
  }
);

于是出现了你周围潜在的目标,果然发现了三里屯附近的 MM!

{
    "_id" : ObjectId("60e459140d2f25c251fe0989"),
    "name" : "三里屯MM4",
    "gender" : "female",
    "location" : {
        "type" : "Point",
        "coordinates" : [
            116.460054,
            39.938063
        ]
    }
}
{
    "_id" : ObjectId("60e459140d2f25c251fe098b"),
    "name" : "三里屯MM6",
    "gender" : "female",
    "location" : {
        "type" : "Point",
        "coordinates" : [
            116.461065,
            39.939399
        ]
    }
}
{
    "_id" : ObjectId("60e459140d2f25c251fe0985"),
    "name" : "三里屯MM1",
    "gender" : "female",
    "location" : {
        "type" : "Point",
        "coordinates" : [
            116.458347,
            39.940602
        ]
    }
}
{
    "_id" : ObjectId("60e459140d2f25c251fe098a"),
    "name" : "三里屯MM5",
    "gender" : "female",
    "location" : {
        "type" : "Point",
        "coordinates" : [
            116.461082,
            39.944209
        ]
    }
}

你心里一阵窃喜,嘴里却冷冷地说到:“谁说程序猿不好找对象的?有了 MongoDB 这个神器,我神不知鬼不觉的就搜到了好多对象”。

“代码里的对象更多!”旁边那个声音又响起来了。

你猛地惊醒了过来,呆呆地看着电脑屏幕上的一个个对象,而三里屯距离你有几千公里之遥——谁叫咱当时逃离北京了呢?

相关文章

  • MongoDB 如何实现摇一摇发现附近的人

    前传 作为寂寞沙洲冷、单身比例高的程序猿人群,少不得拿出手机摇一摇,看看附近有没有钟意的人。那这摇一摇过程中发生了...

  • 如何“摇一摇”——Redis实现“附近的人”的方法及其他

    1、GEOHash——如何“摇一摇” 1-1、为什么需要GEOHash 现在很多APP都有“摇一摇”、“附近的人”...

  • 摇一摇

    摇一摇手机 附近的人中有你 摇一摇你的手臂 附近的人们,都看向你我的相依 摇一摇脚尖上的鞋子 喂,你偷看向哪里? ...

  • 你摇或者不摇,他就在那里

    微信有个“摇一摇”的功能,还有一个“附近的人”的功能,不用我说大家都知道是干嘛的。我发现那些喜欢用“摇一摇”的人大...

  • 微信终于承认:“摇一摇”是“少儿不宜”

    微信在今日正式上线了青少年模式,开启后“摇一摇”、“附近的人”将不可访问,有网友戏称:“你终于承认你家摇一摇是少儿...

  • 摇一摇 附近的寂寞

    夜沉下来了,像被泼了墨一般的黑。 这个句子可真一般,可是却被季默牢牢记住,时不时的拿出来感慨一番。本来嘛,说天黑了...

  • 从0到1000粉,新手增粉实战篇

    关于如何增加粉丝,在很多搜索引擎上能搜索很多攻略、经验、技巧,还有各类广告,但是,那些什么漂流瓶、附近的人、摇一摇...

  • 摇一摇实现

    今天项目需要摇一摇下单!!!! 之前没做过,度娘了一下,大致分为三种 1.系统原生的 [[UIApplicatio...

  • 微信里面有哪些重要功能模块已经开始走下坡路了?

    就目前来看,已经被用户弃用的功能有:附近的人,摇一摇,漂流瓶。 但是这些功能,特别是陌生人的社交功能-附近的人、摇...

  • iOS「摇一摇」功能

    、、、在 UIResponder 类中提供了三个摇一摇的实现方法: 三个方法一次为: 开始摇一摇、结束摇一摇、取消...

网友评论

    本文标题:MongoDB 如何实现摇一摇发现附近的人

    本文链接:https://www.haomeiwen.com/subject/jlcsmrtx.html