温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何利用Mongodb实现查询地理空间

发布时间:2020-11-10 17:25:16 来源:亿速云 阅读:199 作者:Leah 栏目:编程语言

本篇文章给大家分享的是有关如何利用Mongodb实现查询地理空间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

在移动开发中,经常会用到定位的功能,例如美团、饿了么、猫眼电影等的app,都是使用了移动端定位,然后查找出自己地理位置附近的一些服务、信息。

地理位置索引是MongoDB早已被用户所熟知的特性,其球面(Spherical)和平面(Flat)两种模式,提供了丰富的地址位置的表示方式,如2d、2dsphere和GeoJSON等,对于移动App,如地图软件、打车软件、外卖软件,MongoDB强大的地理位置索引功能使其最佳选择;此外,对于物联网、智慧都市等领域,也需要大量的地理位置相关操作,这些都是MongoDB的竞技场。

本篇文章将会以Mongodb为数据库,讲述如何在数据库层级进行定位查询。

举个例子,我们需要做一个app,商家可以把自己的商品发布到app上,用户打开app查看离自己从近到远的商品。

如果没有地理位置的需求,那好办,直接插库然后查库就ok了,但是如果用到了地理位置,则需要用到Mongodb的一些位置功能。

Mongodb有一种地理空间索引,利用它可以进行经纬度的计算,下面继续介绍如何使用该功能。

下面以Nodejs+mongoose为例

1.创建Schema:

  const mongoose = require( 'mongoose' );
  let goodsSchema = new mongoose.Schema( {
   name: String,
   price: Number,
   location: {
     type: [ Number ],
     index: {
       type: '2dsphere',
       sparse: true
     }
   }
  }, {
   collection: 'Goods'
  } )

2.创建Model

    let goodsModel = mongoose.model(‘Goods', goodsSchema)

3.插入数据

    按照以下数据格式往数据库插入数据:

  {
   "name":"名字",
   "price":12,
   "location":[经度,纬度]
  }

4.查看用户附近的数据

  goodsModel.find( {
     'location': {
       $nearSphere: [
         parseFloat( 经度 ),
         parseFloat( 纬度 )
       ],
       $maxDistance: 1000
     }
   } ).limit(10).skip(0).lean().exec();

以上就是如何利用Mongodb实现查询地理空间,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI