Дослідження геопросторових можливостей MongoDB для створення додатків на основі місцеположення за допомогою Node.js

текст перекладу
pic

Як ініціалізувати Express додаток?

  1. Створіть папку, в якій ви хочете створити свій Express додаток.
    Наприклад: app
    backend_
  2. Тепер зайдіть в цю папку за допомогою наступної команди.
    a. cd appbackend
    b. Натисніть enter_
  3. Тепер запустіть наступну команду, яка створить файл package.json для залежностей та деяких скриптів.
    a. npm init -y
    b. Натисніть enter
  4. Тепер запустіть наступну команду для установки деяких модулів з Express.
    a. npm i express mongoose dotenv jsonwebtoken
    b. Натисніть enter
  5. Встановіть ще один пакет, інструмент командного рядка, який автоматично перезапускає додатки Node.js, коли виявляються зміни у файлах. Це прискорює розробку додатків Node.js.
    a. npm i nodemon -D
    b. Натисніть enter
  6. Тепер створіть файл index.js у тій самій директорії.

Початковий код для запуску сервера Express js

  1. Тепер у файлі index.js напишіть наступне
const express = require('express')  
const app = express()  

app.listen(5000, (req, res) => {  
 console.log('Server is running on port 5000')  
})
  1. Тепер перейдіть до файлу package.json і додайте наступний рядок
"dev": "nodemon index.js"

pic

Ваш файл виглядатиме ось так

  1. Тепер перейдіть до \appbackend> і напишіть наступну команду_
npm run dev

pic

Ваш термінал виглядатиме ось так

Для використання import замість require, виконайте наступні кроки

  1. Перейдіть до файлу package.json і додайте наступний рядок
"type": "module"

pic

Ваш файл виглядатиме ось так

  1. Тепер напишіть наступний рядок коду для імпорту модуля express.
import express from "express"

pic

Ваш файл index.js виглядатиме ось так

Якщо вам сподобалося, дайте знати через лайки та коментарі…😊, до того ж залишайтеся на зв'язку для неймовірного контенту.
текст перекладу
У цьому випадку ми шукаємо місця в межах 500 метрів від заданих координат.
- $geometry: Визначає точку, навколо якої ми шукаємо.
- $maxDistance: Обмежує пошук максимальною відстанню, в даному випадку 500 метрів.

Випадок використання:

Цей запит ідеально підходить для застосунків, які потребують пошуку найближчих місць, таких як сервіс на основі локацій для туристів або навігаційний додаток, який показує найближчі точки інтересу.

2. Пошук місць всередині полігону

Окрім пошуку в межах локації, MongoDB дозволяє шукати місця всередині певної географічної області, визначеної полігоном. Це корисно для запитів до місць, що знаходяться в межах заздалегідь визначеного регіону або кордону.

Наведений нижче приклад демонструє, як шукати місця всередині прямокутного полігону, визначеного чотирма куточками:

const { getDB, closeDB } = require("./db");  

(async () => {  
 const db = await getDB();  

 const places = await db  
 .collection("sl-places")  
 .find({  
 location: {  
 $geoWithin: {  
 $geometry: {  
 type: "Polygon",  
 coordinates: [  
 [  
 [81.2, 6.2], // Нижній лівий кут  
 [81.6, 6.2], // Нижній правий кут  
 [81.6, 6.5], // Верхній правий кут  
 [81.2, 6.5], // Верхній лівий кут  
 [81.2, 6.2], // Закриваємо полігон  
 ],  
 ],  
 },  
 },  
 },  
 })  
 .toArray();  

 console.log(places); // Вивести місця всередині полігону  
 closeDB(); // Закрити з'єднання з базою даних  
})();

Пояснення:

  • $geoWithin: Оператор $geoWithin використовується для пошуку документів, що знаходяться всередині заданої геометрії, яка може бути полігоном, колом чи іншою фігурою.
  • $geometry: Визначає геометрію (у цьому випадку полігон) для пошуку. Координати надаються у вигляді масиву точок довготи та широти, що визначають межі полігону.

Випадок використання:

Цей запит особливо корисний для застосунків, які потребують фільтрації результатів у межах географічного регіону, наприклад, пошук усіх точок інтересу в межах парку, міста або адміністративного регіону.

3. Пошук областей, що перетинаються з точкою

Ще одним геопросторовим оператором в MongoDB є $geoIntersects, який дозволяє шукати області, що перетинаються з певною точкою. Це корисно в випадках, коли потрібно з'ясувати, які регіони або зони містять задану локацію.

Нижче наведено приклад, як шукати області, що перетинаються з точкою [81.7302, 7.2801]:

const { getDB, closeDB } = require("./db");  

(async () => {  
 const db = await getDB("playground");  

 const area = await db  
 .collection("sl-places")  
 .find({  
 area: {  
 $geoIntersects: {  
 $geometry: { type: "Point", coordinates: [81.7302, 7.2801] },  
 },  
 },  
 })  
 .toArray();  

 console.log(area); // Вивести області, що перетинаються з точкою  
 closeDB(); // Закрити з'єднання з базою даних  
})();

Пояснення:

  • $geoIntersects: Оператор $geoIntersects знаходить документи, чия геометрія перетинається з вказаною геометрією.
  • $geometry: Визначає геометрію для запиту на перетин. У цьому випадку ми шукаємо області, що перетинаються з конкретною точкою.

Випадок використання:

Цей запит можна використовувати для визначення, які адміністративні регіони або зони перекриваються з заданою точкою, наприклад, щоб з'ясувати, до якого району належить конкретне місце.

Висновок

Геопросторові можливості MongoDB роблять його відмінним вибором для застосунків, що працюють з даними на основі локацій. Використовуючи індекс 2dsphere та геопросторові оператори, такі як $near, $geoWithin і $geoIntersects, розробники можуть створювати потужні, орієнтовані на локації додатки.

У цій статті ми показали, як виконувати базові геопросторові запити з MongoDB та Node.js.
текст перекладу
Ми також охопили важливість створення 2dsphere індексу, що є критично важливим для забезпечення швидких і ефективних геопросторових запитів на великих наборах даних.

Інтегруючи геопросторові запити MongoDB у ваш додаток, ви можете створювати більш інтелектуальні та контекстно-орієнтовані досвіди для ваших користувачів.

// Перегляньте повний код на GitHub, не забудьте поставити зірочку 🙂

[

GitHub - ASMohamedFaheemAnver/BasicGeoSearchInMongoDB: Як здійснювати базовий геопошук у MongoDB!

Як здійснювати базовий геопошук у MongoDB! Долучайтеся до розробки ASMohamedFaheemAnver/BasicGeoSearchInMongoDB…

github.com

](https://github.com/ASMohamedFaheemAnver/BasicGeoSearchInMongoDB?source=post_page-----9f6ccd3a790f--------------------------------)

Перекладено з: Exploring MongoDB’s Geospatial Features to Build Location-Based Applications with Node.js

Leave a Reply

Your email address will not be published. Required fields are marked *