情况
假设我的数据库中有两个集合:cities
和events
。
cities
集合存储有关世界城市的数据,每个城市文档都包含loc
GeoJson字段,如{"type": "Point", "geometry": [lng, lat]}
,以便我可以使用geoNear等地理空间函数查询mongodb。
events
集合存储有关城市中发生的事件的数据。因此,每个事件文档都包含一个city
字段,其中包含对城市对象的引用。使用ObjectId引用与嵌入城市数据的动机是每个城市的事件数量可能非常大。
问题
如果我想要一个事件的地理空间数据,我可以查询events
集合并填充(例如使用mongoose)city
字段。但我不能(我想)在events
上利用mongodb地理空间功能,因为他们没有GeoJson字段。
这个设计有问题吗?我必须重新设计数据库,或者有一些我不知道的mongodb(或mongoose)功能来实现这个目标吗?最佳实践怎么样?