J'essaie de créer une application dans laquelle un utilisateur peut entrer dans un emplacement et rechercher des médecins entourant cet emplacement. Un administrateur ajoutera des médecins avec leurs détails avec l'emplacement. P>
J'apprends mongodb et je me demande quel serait le moyen efficace de le faire. P>
Je planifie d'utiliser Google's API . p>
Ma question est de savoir comment dois-je stocker l'emplacement du médecin et comment puis-je récupérer le docteur entourant l'emplacement recherché? P>
Je pensais pouvoir faire ceci: p>
Lorsqu'un médecin est enregistré, je pourrais appeler l'API et rechercher des endroits proches de l'emplacement enregistré par le médecin, puis enregistrez les emplacements à proximité dans un tableau. Lorsqu'un patient recherche un emplacement, je rechercherai le tableau des emplacements de chaque médecin et si le texte recherché correspond à l'élément de la matrice, je reviendrai ces médecins. P>
Mais cela ne semble pas très efficace. Quelqu'un peut-il suggérer comment je peux faire cela? P>
3 Réponses :
Vous pouvez obtenir la latitude et la longitude de l'endroit des endroits API. Bien que l'administrateur ajoute le médecin, utilisez les mêmes endroits API pour obtenir la latitude et la longitude correspondantes. Maintenant, vous pouvez utiliser une matrice de distance pour vérifier la fermeture de ses fonctions, car vous avez à la fois les médecins et la latitude et la longitude de l'utilisateur. P>
Vous pouvez jeter un coup d'œil aux requêtes géospatiales de MongoDB: HTTPS: //docs.mongodb .com / manuel / géospatial-requêtes /
Modèle de stockage est: p> Après cela, vous devez mettre l'index GEO, puis la requête avec $ près de Travaillera: https://docs.mongodb.com/manual/reference/ Opérateur / Query / Proche / P> Une autre approche que vous pouvez prendre est de calculer une latitude et une longitude approximatives et de la longitude et optimiser votre requête. Pour que cela fonctionne, le stockage ressemblera à: p> Vous voulez donc trouver tout le docteur le plus proche d'un point avec un (lat:, long :)
Se rapprocher de la lat (max) et de long (max), de la (min) et longue (min) à l'aide de la méthode ci-dessous. Et interroger la base de données par simple requête de gamme. P> similaire à ce document: http://janmatuschek.de / LATUTUTUTUTUDELONGITUREMENTSCOORDINATES P> P>
Vous n'avez besoin de rien de complexe ou de dépendant des API et de la base de données pour le faire. Obtenez simplement la coordonnée du client et la gamme qu'il est disposée à voyager. Vous pouvez ensuite calculer un carré qui couvre le cercle de la plage choisi et utilise la latitude et la longitude pour interroger les médecins disponibles avec> = et <=.
Cela offre l'avantage de servir non seulement pour la coordonnée des clients, mais pour toute coordonnée La carte. p>
Il n'est pas 100% précis mais simple, donne de bonnes performances et est acceptable pour la plupart des cas d'utilisation. p>
Avez-vous regardé 2DSphere index et $ Geonear?