我已经尝试对集合进行多面搜索,并且需要与标准匹配的整个文档作为输出。由于需要按分组条件的不同组合进行分组,因此需要进行多面搜索。但是,无论何时构面中的聚合管道的数量超过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:{})