Comment stocker de l'information géospatiale dans mongoDB
Selon la documentation mongoDB
(lien)
si vous souhaitez stocker des informations géospatiales dans un document de terrain, vous avez deux options, un tableau ou d'un document incorporé, et de l'ordre doit être toujours la longitude, la latitude.
Si je veux utiliser un document incorporé, comment puis-je m'assurer que le champ est de l'ordre?
Ou doit les champs dans le document incorporé avoir un nom spécifique?
Vous devez vous connecter pour publier un commentaire.
avec un document incorporé, quel que soit le nom du champ dans le document incorporé, le premier champ doit contenir la longitude de la valeur et de la deuxième champ doit contenir la latitude de la valeur. Par exemple:
Ici la x champ de la longitude; et la y champ de la latitude.
Ce qui concerne
The values of the array may be either arrays, as in [ 55.5, 42.3 ], or embedded documents, as in { lng : 55.5 , lat : 42.3 }.
--docs.mongodb.org/manual/core/geospatial-indexes/...2D Géospatiales Index, Stocker des Données de Localisation
"Tous les documents doivent stocker des données de localisation dans le même ordre. Si vous utilisez la latitude et la longitude de votre système de coordonnées, toujours stocker d'abord la longitude. MongoDB est 2d sphérique index opérateurs ne reconnaissent que [ la longitude, la latitude] de la commande."
Voici un bon post sur Géospatiales Requêtes dans MongoDB dans le cas où vous en avez besoin.
Je vous conseille de nom de votre domaine:
x and y
, au lieu delongitude/latitude
, parce que, après une mise à jour, la longitude et la latitude sera réorganisée dans l'ordre alphabétique, de façon inversée.Géospatiales indices nous permettent de trouver des choses en fonction de l'emplacement géographique.
Nous avons 2 options:
En 2-D, nous avons un plan cartésien avec
x
&y
coordonnées et un tas d'objets différents.Le document doit stocker une sorte de
x
,y
emplacement avecensureIndex({'location':'2d', 'type':1})
.La
type
(en option) option spécifie la direction de l'index, c'est à dire par ordre croissant ou décroissant. Il peut être un composé de l'indice.Exemple d'utilisation:
Pour trouver les lieux à proximité, utiliser la commande:
Dans la pratique, la manière dont c'est souvent par le biais d'un
limit
. Pour limiter les résultats aux par exemple 20 ajouter.limit(20)
.MongoDB documentation a dit ce qui suit:
Un champ nommé coordonnées qui spécifie les coordonnées de l'objet.
Si la spécification de la latitude et de la longitude, de la liste de la longitude première et puis latitude:
Valide les valeurs de longitude sont compris entre -180 et 180, à la fois inclusive.
Valide les valeurs de latitude sont entre -90 et 90 (tous deux inclus).
Oficial MongoDB documentation: https://docs.mongodb.com/manual/geospatial-queries/#geospatial-indexes