Ситуация
Предположим, у меня есть две коллекции в моей базе данных: cities
и events
.
Коллекция cities
хранит данные о городах мираи каждый городской документ содержит поле loc
GeoJson, например {"type": "Point", "geometry": [lng, lat]}
, так что я могу запросить mongodb с геопространственными функциями, такими как geoNear.
Коллекция events
хранит данные о событиях, которые происходят в городах.Таким образом, каждый документ события содержит поле city
со ссылкой на городской объект.Использование ссылок ObjectId против встраивания данных города мотивируется тем фактом, что число событий в городе может быть очень большим.
Проблема
Если мне нужны геопространственные данные длясобытие, которое я могу запросить events
collection и заполнить (используя, например, mongoose) поле city
.Но я не могу (я полагаю) использовать геопространственную функциональность mongodb на events
, потому что у них нет поля GeoJson.
Что-то не так с этим дизайном?Я должен перепроектировать базу данных или есть какая-то функциональность mongodb (или mongoose), которой я не знаю, чтобы добиться этого?А как насчет лучших практик?