首頁  >  文章  >  後端開發  >  如何用Mongodb做地理空間查詢

如何用Mongodb做地理空間查詢

小云云
小云云原創
2017-11-25 09:43:411962瀏覽

Mongodb,分散式文件儲存資料庫,由C++語言編寫,旨在為WEB應用提供可擴展的高效能資料儲存解決方案。 MongoDB是一個高效能,開源,無模式的文檔型資料庫,是目前NoSql資料庫中比較熱門的一種。它在許多場景下可用於取代傳統的關係型資料庫或鍵/值儲存方式。

在行動開發中,常常會用到定位的功能,例如美團、餓了麼、貓眼電影等的app,都是使用了行動端定位,然後找出自己地理位置附近的一些服務、資訊。

所以這篇文章將會以Mongodb為資料庫,講述如何在資料庫層級進行定位查詢。

分析

舉個例子,我們需要做一個app,商家可以把自己的商品發佈到app上,用戶打開app查看離自己從近到遠的商品。

如果沒有地理位置的需求,那好辦,直接插庫然後查庫就ok了,但是如果用到了地理位置,則需要用到Mongodb的一些位置功能。

Mongodb有一種地理空間索引,利用它可以進行經緯度的計算,以下繼續介紹如何使用該功能。

實作

下面以Nodejs+mongoose為例

建立Schema:

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

建立Model

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

插入資料

依照下列資料格式插入資料庫:

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

檢視使用者附近的資料

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


以上內容就是和大家分享了位置索引的用法,十分實用的一個功能,希望大家學以致用。

相關推薦:

如何讓資料庫索引的使用效率更高?

檢視MySQL資料表的索引方法

#什麼是mongoDB資料庫

以上是如何用Mongodb做地理空間查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn