在$ facet中使用2个以上的聚合管道运行MongoDB查询会导致“连接失败”对话框

时间:2019-05-06 11:24:20

标签: mongodb robo3t

我已经尝试对集合进行多面搜索,并且需要与标准匹配的整个文档作为输出。由于需要按分组条件的不同组合进行分组,因此需要进行多面搜索。但是,无论何时构面中的聚合管道的数量超过2,都会弹出一个警告框,提示“执行脚本失败。错误:连接失败”。但是,与数据库的连接永远不会丢失,并且如果我减少了管道,查询再次成功执行。这里可能是什么问题?

我尝试将Shell超时增加到可笑的数量,但这没有帮助:

https://blog.robomongo.org/robomongo-is-robo-3t/#4a

如果查询不能仅使用RAM运行,我还按照以下链接的建议使用磁盘:

https://docs.mongodb.com/manual/core/aggregation-pipeline-limits/

但是效果是一样的。

我正在生成查询,如下所示:

db.getCollection('PERSON-DB').aggregate([

{
    $facet: {
        "categorizedBySSN":[
            {"$group" : 
                {_id:{source:"$ssn"}, 
                        count:{$sum:1},
              entries: { $push: "$$ROOT" }
                       }
            }
        ],
        "categorizedBySSN+FirstName":[
            {"$group" : 
                {_id:{
                ssn:"$ssn",
                firstName: "$name.first"}, 
                        count:{$sum:1},
              entries: { $push: "$$ROOT" }
                       }
            }
        ],
        "categorizedByFirstName+LastName+Address":[
            {
             $unwind: "$postalAddresses"
            },
            {"$group":
                {_id:{
                    firstName: "$name.first",
                    lastName: "$name.last",
                    country: "$postalAddresses.country.name", 
                    state: "$postalAddresses.state.code", 
                    city: "$postalAddresses.city", 
                    street: "$postalAddresses.streetAddress"
                    },
                count:{$sum:1},
                entries:{$push:"$$ROOT"}
                }
            }
        ]
    }
}
], { allowDiskUse:true, cursor:{})

0 个答案:

没有答案