ホームページ >バックエンド開発 >PHPチュートリアル >Mongodb で地理空間クエリを実行する方法
Mongodb は、C++ 言語で書かれた分散ドキュメント ストレージ データベースで、WEB アプリケーションにスケーラブルで高性能なデータ ストレージ ソリューションを提供することを目的としています。 MongoDB は、高性能、オープンソース、スキーマレスのドキュメント データベースであり、現在人気の NoSQL データベースです。多くのシナリオで、従来のリレーショナル データベースやキー/値ストレージの置き換えに使用できます。
モバイル開発では、測位機能がよく使用されます。たとえば、Meituan、Ele.me、Maoyan Movies などのアプリはすべて、地理的位置に近いサービスや情報を見つけるためにモバイル測位を使用します。
そこで、この記事では Mongodb をデータベースとして使用して、データベース レベルで位置決めクエリを実行する方法を説明します。
分析
たとえば、販売者がアプリで商品を公開し、ユーザーがアプリを開いて自分に最も近い商品を表示できるアプリを作成する必要があります。
地理的な位置が必要ない場合は、データベースを接続してデータベースを確認するだけで簡単に処理できます。ただし、地理的な位置を使用する場合は、Mongodb のいくつかの位置機能を使用する必要があります。
Mongodb には緯度と経度を計算するために使用できる地理空間インデックスがあります。以下ではこの関数の使用方法を紹介します。
実装
以下はNodejs+mongooseを例にします
スキーマを作成します:
const mongoose = require( 'mongoose' );let goodsSchema = new mongoose.Schema( { name: String, price: Number, location: { type: [ Number ], index: { type: '2dsphere', sparse: true } } }, { collection: 'Goods'} )
モデルを作成します
goodsModel = mongoose.model('Goods', GoodsSchema)
データを挿入します
以下に従いますデータデータベースにフォーマットする データを挿入する:
{ "name":"名字", "price":12, "location":[经度,纬度] }
ユーザーの近くのデータを表示する
goodsModel.find( { 'location': { $nearSphere: [ parseFloat( 经度 ), parseFloat( 纬度 ) ], $maxDistance: 1000 } } ).limit(10).skip(0).lean().exec();
上記の内容は、位置インデックスの使い方を皆さんに共有するためのものです。ぜひ応用してみてください。
関連する推奨事項:
データベース インデックスの使用をより効率的にするにはどうすればよいですか?
以上がMongodb で地理空間クエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。