我有一个高度标准化的数据模型。目前,我正在使用手动引用,存储_id并运行顺序查询,从最深的集合中获取详细信息。
引用是单向的,流程大约有5-6个集合.对于一个特定的用例,我不得不通过从更高级别的集合中查询后续的"_id“来查询最深的集合。所以从技术上讲,每次我运行一个
db.collection_name.find(_id: ****). 我的主要目标是在不影响其他集合原子性的情况下优化读取。我读过关于非规范化的文章,这对我来说没有任何意义,因为我希望保留一个选项来改变基数,从而完全保持一个单独的集合。
我最初考虑使用MapReduce从后面进行聚合,并主要针对特定的用例拥有一个集合。但即便是这样听起来也没那么好。
在关系数据库中,我将在子查询中拆分查询,并执行连接以获得与初始结果相交的数据集。由于mongodb不支持联接,所以我很难搞清楚任何事情。
如果您之前遇到过类似的问题,或者知道如何解决它,请提供帮助。
发布于 2015-07-15 08:43:35
去造假你的数据。
MongoDB不做联接的句点.
数据库上没有从多个集合获取数据的操作。不是find(),不是aggregate(),也不是MapReduce。当您需要将数据从多个集合中拼凑在一起时,除了在应用程序层上这样做之外,没有别的方法了。由于这个原因,您应该组织数据的方式,任何公共和性能相关的查询可以通过查询一个集合。
为了做到这一点,您可能需要创建冗余和传递依赖。这在MongoDB中是正常的。
当你觉得这很“脏”的时候,你应该接受这样一个事实:你的性能会是次优的,或者使用另一种数据库,比如一个经典的关系数据库或一个图形数据库。
https://stackoverflow.com/questions/31424690
复制相似问题