Mongodb计数多个子对象和分组依据

时间:2016-08-31 10:52:48

标签: node.js mongodb aggregation-framework

你好这个查询对我运行正常我想添加其他数组以及联系人,我想要他们单独计数。如果我添加联系人,则将结果添加到计数P.S:我使用$ sum的数组名称开始显示零计数

return Company.aggregate(
{"$unwind":"$agreement"},
{"$unwind":"$contact"},
{"$unwind":"$companySite"},

{ $group: { _id: {
"Organization": "$orgId",
"Company": "$name"
}, "count": { $sum: 1 } } },{
"$project": {
"_id": 0,
"Company": "$_id.Company",
"Organization":"$_id.Organization",
"Count": "$count"
}
})

预期产出

"Company": "Multi-Metal Manufacturing",
 "Organization": "1",
 "AgreementCount": 1,
 "ContactCount" : 4
 "ABC Count": 5

示例文档是:

{
    "_id" : ObjectId("57c6a97a90c933a2d54117dc"),
    "ITBCompanyId" : 1034,
    "updatedAt" : ISODate("2016-08-31T12:47:03.679Z"),
    "createdAt" : ISODate("2016-08-31T09:55:06.217Z"),
    "identifier" : "INL10",
    "name" : "Inline Data Systems",
    "addressLine1" : "7 Park Place",
    "addressLine2" : "Ste D",
    "city" : "Swansea",
    "orgId" : "1",
    "deletedAt" : null,
    "_info" : {
        "lastUpdated" : ISODate("2016-02-10T21:22:15.000Z"),
        "updatedBy" : "Clarissa"
    },
    "whois" : [],
    "configuration" : [],
    "contact" : [
        {
            "email" : "justin@inlinedatasystems.com",
            "mobileGuid" : "d8852942-8f5a-406f-a646-a5f8697f7885",
            "presence" : null,
            "gender" : null,
            "title" : null,
            "country" : null,
            "zip" : null,
            "state" : null,
            "city" : null,
            "addressLine2" : null,
            "addressLine1" : null,
            "lastName" : "Wilkerson",
            "firstName" : "Justin",
            "id" : 191,
            "_id" : ObjectId("57c6abdfb966968130b1671c"),
            "communicationItems" : [],
            "customFields" : null,
            "company" : {
                "name" : "Inline Data Systems",
                "id" : "19331"
            },
            "relationship" : {
                "name" : null,
                "id" : 0
            }
        }
    ],
    "agreement" : [
        {
            "periodType" : null,
            "billAmount" : "0",
            "billTermsId" : 12,
            "billOneTimeFlag" : false,
            "billCycleId" : "2",
            "expiredDays" : "0"
        },
        {
            "id" : "40",
            "name" : "Managed Hosted Server Agreement",
            "billAmount" : "0",
            "periodType" : null,
            "_id" : ObjectId("57c6ab96b966968130b16616"),
            "_info" : {
                "lastUpdated" : ISODate("2014-10-03T14:25:42.000Z"),
                "updatedBy" : "ali            "
            },
            "contact" : {
                "id" : "191",
                "name" : "Justin Wilkerson"
            },
            "agreementType" : {
                "id" : "33",
                "name" : "HDCloud - Hosted Server"
            }
        },
        {
            "id" : "41",
            "name" : "Managed Backup Agreement",
            "parentAgreementId" : "42",
            "customerPO" : ""
        }
    ],
    "companySite" : [
        {
            "id" : 1037,
            "name" : "Main",
            "city" : "Swansea",
            "state" : "IL",
            "zip" : "62226",
        }
    ]

0 个答案:

没有答案