我需要从MongoDb加载一组特定的数据。让我们假设,我需要根据特定条件设置项目列表,我需要知道子项计数的项目,需要包含具有" moderated = true"并使用" moderated == false"计算所有子文档。不包括他们。由于我有一个带有嵌入式文档的文档,我可以从db检索所有数据集并在客户端使用" for"进行操作。我也可以使用
db.item.aggregate
使用我需要的数据创建响应,而且此响应将具有确切所需的结构。
问题是在减少MongoDb负载方面会有什么更好的方法:
答案 0 :(得分:1)
这是一个奇怪的问题。真的,如果你关心的是减少MongoDB的负载,那么最好自己发送你需要的数据并在客户端上进行计算。但这违背了使用MongoDB的一些目的。真正的问题是,为什么要优先减少MongoDB的负载?据推测,这种聚合不是您在服务器上的主要负载,并且您不希望通过这种额外的聚合影响核心操作?在这种情况下,一个好的解决方案是在副本集中添加hidden secondary(您已在副本集中运行MongoDB,对吗?; D),隐藏的辅助目的将是处理数据分析任务,如聚合。隐藏的辅助数据上的数据状态可能略微落后于主数据库上的数据状态,具体取决于复制延迟,但这通常适用于分析。