Mongodbによる地理空間クエリー


MongoDBは、分散ファイルに基づいて格納されるデータベースです.C++言語で作成されます.WEBアプリケーションに拡張性の高い高性能データストレージソリューションを提供することを目的としています.
前言
モバイル開発では、美団、お腹が空いたか、猫眼映画などのappのような位置決め機能がよく使われ、モバイル側の位置決めを使用して、自分の地理的な位置の近くにあるサービスや情報を検索します.
そこで、この記事ではMongodbをデータベースとして、データベースレベルでクエリーを位置決めする方法について説明します.
ぶんせき
例えば、私たちはappを作る必要があります.業者は自分の商品をappに公開することができ、ユーザーはappを開けて自分に近い商品から遠い商品を見ることができます.
地理的なニーズがなければ、簡単です.直接ライブラリを挿入してライブラリを調べるとokになりますが、地理的な場所を使用する場合はMongodbのいくつかの位置機能が必要です.
Mongodbには、経緯度の計算が可能な地理空間インデックスがあり、この機能の使用方法について説明します.
インプリメンテーション
次はNodejs+mongoseを例にとります
  • 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();

    まとめ
    今回は主に位置インデックスの使い方を共有し、非常に実用的な機能で、demoはそんなに手を握っていませんが、主な骨格が出てきて、自由に発揮することができます~
    備考:これはバックグラウンドでやる必要があります.android、ios、webは位置決めサービスを使ってユーザーの経緯を見つけ、バックグラウンドに伝える必要があります.
    転載先:https://www.cnblogs.com/Jarvin/p/5706554.html