Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB—aub数组和子文档的两个级别上的聚合组和_Mongodb_Aggregation Framework - Fatal编程技术网

MongoDB—aub数组和子文档的两个级别上的聚合组和

MongoDB—aub数组和子文档的两个级别上的聚合组和,mongodb,aggregation-framework,Mongodb,Aggregation Framework,这是我的问题。我在网站上查看了很多其他MongoDB问题,但没有一个与我下面的情况相符 我有一个MongoDB嵌入式文档结构,如下所示:- { company : "ABC", year : 2010, Project : [{ Domain : "Telecom", Client: [{"Name": "Ponderfone","size":25},{"Name": "Skytel","size":35},{"Name":

这是我的问题。我在网站上查看了很多其他MongoDB问题,但没有一个与我下面的情况相符

我有一个MongoDB嵌入式文档结构,如下所示:-

{
    company : "ABC",
    year : 2010,
    Project : [{
            Domain : "Telecom",
            Client: [{"Name": "Ponderfone","size":25},{"Name": "Skytel","size":35},{"Name": "ChinaTel","size":10}]
        }, {
            Domain : "Retail",
            Client: [{"Name": "Gatemart","size":95},{"Name": "Clearway","size":40}]         
        }, {
            Domain : "Finance",
            Client: [{"Name": "MFCI","size":20},{"Name": "FCCI","size":20},{"Name": "MobiBank","size":35}]              
        }
    ]
}
{
    company : "ABC",
    year : 2011,
    Project : [{
            Domain : "Telecom",
            Client: [{"Name": "Ponderfone","size":50},{"Name": "Skytel","size":30},{"Name": "ChinaWay","size":30}]
        }, {
            Domain : "Retail",
            Client: [{"Name": "Gatemart","size":120},{"Name": "Shadowfax","size":15}]           
        }, {
            Domain : "Finance",
            Client: [{"Name": "Reuben Analysts","size":15},{"Name": "FCCI","size":10},{"Name": "MobiBank","size":35}]               
        }
    ]
}
这里的问题是,我试图在最内层的文档中聚合一列,该文档中嵌入了两个级别:- “项目.客户端.大小”

我试图对特定域的这一列求和(如果您看到JSON)

此代码的问题在于,它返回的结果中,员工人数标记为0

{ "_id" : { "company" : "ABC", "year" : 2010, "domain" : "Retail" }, "headcount"
 : 0 }
{ "_id" : { "company" : "ABC", "year" : 2010, "domain" : "Telecom" }, "headcount
" : 0 }
2010年电信和ABC公司的员工人数应为(25+35+10)70人 2010年零售业和ABC公司的员工人数应为(95+40)135人


这里有我遗漏的东西吗

在管道中最后一个过滤器之后,您缺少一个管道步骤。这是对
客户端
数组进行非规范化所必需的,这样您就可以在下一个管道中访问其属性进行聚合。因此,最终管道应遵循以下模式:



完美的非常感谢。。我会花上无数的时间来解决这个问题!!
{ "_id" : { "company" : "ABC", "year" : 2010, "domain" : "Retail" }, "headcount"
 : 0 }
{ "_id" : { "company" : "ABC", "year" : 2010, "domain" : "Telecom" }, "headcount
" : 0 }
db.projects.aggregate([
    { "$match": {"year": 2010, "company": "ABC"} },
    { "$unwind": "$Project" },
    { "$match": { "$or": [{"Project.Domain": /Telecom/},{"Project.Domain": /Retail/}] } },
    { "$unwind": "$Project.Client" },
    { 
        "$group": { 
            "_id": {
                "company": "$company", 
                "year": "$year", 
                "domain": "$Project.Domain"
            },
            "headcount": { "$sum": "$Project.Client.size" }
        }
    }
])