当前位置: 首页 > 知识库问答 >
问题:

Mongodb对聚合框架的解释

羊禄
2023-03-14

MongoDB中的聚合框架有解释功能吗?我在文件里看不到。

我知道找到你就行了

db.collection.find().explain()

但是在聚合框架中,我得到了一个错误

db.collection.aggregate(
    { $project : { "Tags._id" : 1 }},
    { $unwind : "$Tags" },
    { $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}},
    { 
        $group: 
        { 
            _id : { id: "$_id"},
            "count": { $sum:1 } 
        }
    },
    { $sort: {"count":-1}}
).explain()

共有1个答案

孙胜泫
2023-03-14

从MongoDB 3.0版本开始,只需将顺序从

collection.aggregate(...).explain()

collection.explain().aggregate(...)

会给你想要的结果(文档在这里)。

db.collection.aggregate([
    { $project : { "Tags._id" : 1 }},
    { $unwind : "$Tags" },
    { $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}},
    { $group: { 
        _id : "$_id",
        count: { $sum:1 } 
    }},
    {$sort: {"count":-1}}
  ],
  {
    explain:true
  }
)
    null

在MongoDB问题跟踪器中,有几个相关的特性请求需要观察/更新,这些请求涉及更详细的执行状态,以帮助优化/配置聚合管道:

  • server-19758:向聚合解释添加“executionstats”和“allplansexecution”解释模式
  • 服务器-21784:跟踪每个聚合管道阶段的执行状态,并通过explain公开
  • 服务器-22622:改进$lookup解释以指示“from”集合上的查询计划
 类似资料:
  • 我不熟悉Spring和Mongo。我正在使用Spring Batch获取一些报告。我的查询需要一些MongoItemReader不支持的聚合,所以我根据下面的stackoverflow链接扩展了该类。 如何在Spring批处理中使用MongoItemReader聚合查询 但我的聚合有点问题。我制作的聚合在mongoDB中运行良好,但无法将其转换为Spring mongo聚合。 MongoDb聚合按

  • 是否可以在$match中执行OR? 我的意思是这样的:

  • 我正在评估MongoDB聚合框架在多大程度上适合我们的需求,因为我们目前运行在SQL Server之上。我很难执行特定的查询: 假设我有以下伪记录(建模为sql表中的列和mongodb集合中的完整文档) 我很难在mongodb聚合框架中找到合适的结构来执行这样的查询。我可以通过在管道中插入$match来查询单个范围的结果(即获取单个范围的结果),但我无法在单个管道查询中提取所有范围及其计数。

  • 本文向大家介绍MongoDB的聚合框架Aggregation Framework入门学习教程,包括了MongoDB的聚合框架Aggregation Framework入门学习教程的使用技巧和注意事项,需要的朋友参考一下 1. 聚合框架 使用聚合框架对集合中的文档进行变换和组合,可以用多个构件创建一个管道(pipeline),用于对一连串的文档进行处理。这些构件包括筛选(filtering),投射(

  • 我有一个包含联系人的集合,每个联系人文档都有和属性。 现在我想使用Java和版本3.2中的MongoDb Java驱动程序查询数据库。 谢谢。