Je pense qu'il y a une meilleure solution parce que les véhicules ne peuvent pas changer leur ville/pays fréquemment jusqu'à ce qu'ils volent. Je considérais ci-dessous schema-
Country={
id: ObjectId or String,
name: String,
cities: [<array of city subdocuments>],
near_country: [<array of IDs of neighbour countries>],
boundary: location boundary for city <city would be polygon or your choice of geoType>
}
ville sous-document dans le pays peut avoir le schéma comme {id, name, boundary, near_city}.
je choisirai mon schéma Véhicule {id, location_cordinates, curr_city, curr_country}
Maintenant, quand vous obtenez les données de localisation du véhicule, juste aller chercher curr_city du document de véhicule stocké et vérifier si l'emplacement est toujours dans curr_city. Si ce n'est pas un problème, sinon vous avez juste besoin de vérifier si l'emplacement est dans l'un des near_city.
Si la ville/pays change en raison du mouvement du véhicule, vous devez mettre à jour le véhicule avec les dernières données.
De cette manière, vous minimiserez les requêtes sur la base de données. Cela nécessiterait du code car tout ne sera pas fait dans DB.
Ici, j'ai pris quelques hypothèses mêmes idées
- emplacement du véhicule seront stockées dans le document du véhicule. Si ce n'est pas votre cas, supprimez-le. Vous pourriez obtenir l'emplacement de GPS ou de chose semblable et ne doit pas le stocker selon votre besoin.
- Je ne pouvais pas comprendre la partie d'intersection. Est-ce la transition ou l'intersection? Habituellement, le pays a des états, l'état a des villes et ainsi de suite. Le nom de la ville peut être dupliqué à l'intérieur d'un état ou d'un état à l'autre. Mais une ville fera partie d'un seul état. Si ce n'est pas le cas, il vous suffit de mettre la même ville dans plusieurs pays et de mettre une logique de code pour gérer ces villes.
- En prenant une ville proche, vous devez prendre en compte les villes situées à la limite d'un pays et qui peuvent être proches d'un autre pays.
J'espère avoir compris votre problème et la solution vous aide. Je serais heureux d'aider plus loin si je reçois plus d'informations.