【发布时间】:2015-06-12 20:35:50
【问题描述】:
我有一个包含 1 亿个几何文档的集合。
我有第二个集合,其中包含与其他每个几何相关的时间数据。这将是 365 * 96 * 1 亿或 3.5 万亿个文档。
我不想存储超过需要的 1 亿个条目 (365*96) 倍,而是希望将它们保存在单独的集合中,并在 MongoDB 中执行一种 JOIN/DBRef/Whatever I can。
首先,我想通过使用 geoIntersection 从几何集合中获取 GUID 列表。这会将其过滤到 1 亿到 5000。然后使用这 5000 个几何图形 guid,我想根据我指定的 5000 个几何图形和其他日期标准过滤 3.5 万亿个文档,并聚合数据并找到平均值。对于您指定的日期条件,您剩下 5000 个几何图形和 5000 个平均值。
这基本上是我在 SQL 中所知道的 JOIN,这在 MongoDB 中是否可行,并且可以在不到 10 秒的时间内以最佳方式完成。
澄清:据我所知,这就是 DBrefs 的用途,但我读到它根本没有效率,而且处理这么多数据并不合适。
【问题讨论】:
-
DBRefs 基本上已被弃用 - 在您的应用程序中进行连接是一个坏主意,这就是您在这里所做的。这些几何形状有多大?
-
每个几何图形大约 100 个字节,因此以非规范化的方式复制它们是不可行的。几何集合总共运行 10GB,因此如果没有连接,则需要 350400 GB 额外空间。