Join query count of two collections taken in MongoDB

I have two mongodb collections.

corporate and contact collections. I need to get the count of results matching collection records.

How to give the count value in query.

Here i will paste my code . If anyone help me to find a solution to this issue.

$pipeline = array(
        array('$match' =>$array),       
       array(
            '$lookup' => array(
                'from' => 'corporate',
                'localField' => 'BIN',
                'foreignField' => 'BIN',
                'as' => 'corporate_details'
            )
        ),
        array(
            '$lookup' => array(
                'from' => 'contact',
                'localField' => 'BIN',
                'foreignField' => 'BIN',
                'as' => 'contact_details'
            )
        )

    );

$options = ['CORPORATE_STATUS' =>'Active'];
    $result = $collection_contact->aggregate( $pipeline, $options );

Hello, @CIBY_JOHN! Welcome to the community!

Help us to help you :slight_smile:
Provide:

  1. prettified mongo shell’s output of db.coll.findOne() method for each collection, that do you $lookup on.
  2. prettified JSON example of the desired result

corporate collection method result for db.coll.findOne() is

{
“_id” : ObjectId(“5ef32a45c7728380b0ccc1d8”),
“BIN” : “BIN”,
“COMPANY_NAME” : “COMPANY_NAME”,
“COMPANY_NAME_LOCAL” : “COMPANY_NAME_LOCAL”,
“BUSINESS_OVERVIEW” : “BUSINESS_OVERVIEW”,
“BUSINESS_OVERVIEW_LOCAL” : “BUSINESS_OVERVIEW_LOCAL”,
“CORPORATE_COUNTRY” : “CORPORATE_COUNTRY”,
“CORPORATE_REGION” : “CORPORATE_REGION”,
“URL” : “URL”,
“BUSINESS_TYPE” : “BUSINESS_TYPE”,
“ADDRESS1” : “ADDRESS1”,
“ADDRESS2” : “ADDRESS2”,
“ADDRESS3” : “ADDRESS3”,
“CITY” : “CITY”,
“STATE” : “STATE”,
“POST_CODE” : “POST_CODE”,
“ADDRESS1_LOCAL” : “ADDRESS1_LOCAL”,
“ADDRESS2_LOCAL” : “ADDRESS2_LOCAL”,
“ADDRESS3_LOCAL” : “ADDRESS3_LOCAL”,
“CITY_LOCAL” : “CITY_LOCAL”,
“STATE_LOCAL” : “STATE_LOCAL”,
“CORPORATE_COUNTRY_LOCAL” : “CORPORATE_COUNTRY_LOCAL”,
“TELEPHONE” : “TELEPHONE”,
“CORPORATE_EMAIL” : “CORPORATE_EMAIL”,
“REGISTRATION_NO” : “REGISTRATION_NO”,
“COUNTRY_CODE3” : “COUNTRY_CODE3”,
“COUNTRY_CODE2” : “COUNTRY_CODE2”,
“COMPANY_FACEBOOK” : “COMPANY_FACEBOOK”,
“COMPANY_YOUTUBE” : “COMPANY_YOUTUBE”,
“COMPANY_TWITTER” : “COMPANY_TWITTER”,
“COMPANY_LINKEDIN” : “COMPANY_LINKEDIN”,
“COMPANY_WECHAT” : “COMPANY_WECHAT”,
“YEAR_FOUNDED” : “YEAR_FOUNDED”,
“NAICS6_DESC” : “NAICS6_DESC”,
“NAICS6_CODE” : “NAICS6_CODE”,
“BUSINESS_NATURE” : “BUSINESS_NATURE”,
“INDUSTRY_GROUP” : “INDUSTRY_GROUP”,
“PRIMARY_INDUSTRY_DETAIL” : “PRIMARY_INDUSTRY_DETAIL”,
“SECONDARY_INDUSTRY_DETAIL” : “SECONDARY_INDUSTRY_DETAIL”,
“SIC4_DESC” : “SIC4_DESC”,
“SIC4_CODE” : “SIC4_CODE”,
“EMPLOYEE_SIZE_BIG_BAND” : “EMPLOYEE_SIZE_BIG_BAND”,
“COUNTRY_EMPLOYEE_SIZE” : “COUNTRY_EMPLOYEE_SIZE”,
“COUNTRY_EMPLOYEE_SIZE_RANGE” : “COUNTRY_EMPLOYEE_SIZE_RANGE”,
“GLOBAL_EMPLOYEE_SIZE” : “GLOBAL_EMPLOYEE_SIZE”,
“GLOBAL_EMPLOYEE_SIZE_RANGE” : “GLOBAL_EMPLOYEE_SIZE_RANGE”,
“REVENUE_VALUE” : “REVENUE_VALUE”,
“REVENUE_VALUE_RANGE” : “REVENUE_VALUE_RANGE”,
“CORPORATE_DATE_UPDATED” : “CORPORATE_DATE_UPDATED”,
“CORPORATE_STATUS” : “CORPORATE_STATUS”,
“CORPORATE_REMARKS” : “CORPORATE_REMARKS”,
“TID” : “TID”,
“NO_OF_PCS” : “NO_OF_PCS”,
“NO_OF_SERVERS” : “NO_OF_SERVERS”,
“IT_BUDGET” : “IT_BUDGET”,
“INSTALLED_PRODUCT” : “INSTALLED_PRODUCT”,
“TECH_DATE_UPDATED” : “TECH_DATE_UPDATED”
}

contact collection method result for db.coll.findOne() is

{
“_id” : ObjectId(“5ef32a59c7728380b0ccc1e0”),
“BIN” : “BIN”,
“CIN” : “CIN”,
“SALUTATION” : “SALUTATION”,
“FIRSTNAME” : “FIRSTNAME”,
“LASTNAME” : “LASTNAME”,
“FULLNAME” : “FULLNAME”,
“TITLE” : “TITLE”,
“DEPARTMENT” : “DEPARTMENT”,
“SALUTATION_LOCAL” : “SALUTATION_LOCAL”,
“FIRSTNAME_LOCAL” : “FIRSTNAME_LOCAL”,
“LASTNAME_LOCAL” : “LASTNAME_LOCAL”,
“FULLNAME_LOCAL” : “FULLNAME_LOCAL”,
“TITLE_LOCAL” : “TITLE_LOCAL”,
“DEPARTMENT_LOCAL” : “DEPARTMENT_LOCAL”,
“PRIMARY_JOBFUNCTION” : “PRIMARY_JOBFUNCTION”,
“PRIMARY_JOBLEVEL” : “PRIMARY_JOBLEVEL”,
“SECONDARY_JOBFUNCTION” : “SECONDARY_JOBFUNCTION”,
“SECONDARY_JOBLEVEL” : “SECONDARY_JOBLEVEL”,
“CONTACT_ADDRESS1” : “CONTACT_ADDRESS1”,
“CONTACT_ADDRESS2” : “CONTACT_ADDRESS2”,
“CONTACT_ADDRESS3” : “CONTACT_ADDRESS3”,
“CONTACT_CITY” : “CONTACT_CITY”,
“CONTACT_STATE” : “CONTACT_STATE”,
“CONTACT_POST_CODE” : “CONTACT_POST_CODE”,
“CONTACT_COUNTRY” : “CONTACT_COUNTRY”,
“CONTACT_REGION” : “CONTACT_REGION”,
“CONTACT_ADDRESS1_LOCAL” : “CONTACT_ADDRESS1_LOCAL”,
“CONTACT_ADDRESS2_LOCAL” : “CONTACT_ADDRESS2_LOCAL”,
“CONTACT_ADDRESS3_LOCAL” : “CONTACT_ADDRESS3_LOCAL”,
“CONTACT_CITY_LOCAL” : “CONTACT_CITY_LOCAL”,
“CONTACT_STATE_LOCAL” : “CONTACT_STATE_LOCAL”,
“CONTACT_COUNTRY_LOCAL” : “CONTACT_COUNTRY_LOCAL”,
“DIRECT_PHONE” : “DIRECT_PHONE”,
“EXT” : “EXT”,
“MOBILE” : “MOBILE”,
“BUSINESS_EMAIL” : “BUSINESS_EMAIL”,
“PERSONAL_EMAIL” : “PERSONAL_EMAIL”,
“CONTACT_FACEBOOK” : “CONTACT_FACEBOOK”,
“CONTACT_YOUTUBE” : “CONTACT_YOUTUBE”,
“CONTACT_TWITTER” : “CONTACT_TWITTER”,
“CONTACT_LINKEDIN” : “CONTACT_LINKEDIN”,
“CONTACT_WECHAT” : “CONTACT_WECHAT”,
“CONTACT_DATE_UPDATED” : “CONTACT_DATE_UPDATED”,
“CONTACT_STATUS” : “CONTACT_STATUS”,
“CONTACT_REMARKS” : “CONTACT_REMARKS”
}

query ‘match’ array will be

Array
(
[country] => Array
(
[0] => Australia
[1] => New Zealand
[2] => Brunei
[3] => Indonesia
[4] => Laos
[5] => Malaysia
[6] => Myanmar
[7] => Philippines
[8] => Singapore
[9] => Sri Lanka
[10] => Thailand
[11] => India
)

[businessnature] => Array
    (
        [0] => Government
        [1] => Manufacturing
        [2] => Professional Services
        [3] => Retail_Trade
        [4] => Wholesale_Trade
    )

[region] => Array
    (
        [0] => ANZ
        [1] => ASEAN
        [2] => INDIA
    )

[buisiness_type] => Array
    (
        [0] => Limited Liability
        [1] => Non-Government Organisation
        [2] => Private Limited
        [3] => Public Listed
        [4] => Public Sector
        [5] => Sole Proprietorship
    )

[industry_group] => Array
    (
        [0] => AFB - Agriculture, Food, Beverages and Home Products
    )

[industry_details] => Array
    (
        [0] => AFB - Agricultural Products
        [1] => AFB - Food, Beverages And Tobacco Products
        [2] => AFB - Forestry
        [3] => AFB - Grain Mill
        [4] => AFB - Handicrafts, Fancy Goods And Other Household Goods
        [5] => AFB - Home Furnishings And Fittings
        [6] => AFB - Household Chemicals
        [7] => AFB - Paper Products
        [8] => AFB - Personal Effects
        [9] => AFB - Processing And Preserving
        [10] => AFB - Textiles, Clothing, Footwear And Leather Goods
        [11] => AFB - Utilities  - Gas, Electric And Water
    )

[sic_code] => Array
    (
        [0] => 0111
        [1] => 0112
        [2] => 0115
        [3] => 0116
        [4] => 0119
        [5] => 0131
    )

[naics_code] => Array
    (
        [0] => 111110
        [1] => 111120
        [2] => 111130
        [3] => 111140
        [4] => 111150
        [5] => 111160
        [6] => 111191
        [7] => 111199
    )

[employee_size] => Array
    (
        [0] => AA: 1 - 49
        [1] => BB: 50 - 99
        [2] => CC: 100 - 499
        [3] => DD: 500 - 999
        [4] => EE: 1,000 - 4,999
        [5] => FF: 5,000 - 9,999
        [6] => GG: 10,000+
        [7] => ZZ: NOT CODED
    )

[corporate_status] => Array
    (
        [0] => Acquired
        [1] => Active
        [2] => Bankrupted
        [3] => Ceased operations
        [4] => Dormant
        [5] => Liquidating
        [6] => Merged
        [7] => Suspended
    )

[job_level] => Array
    (
        [0] => Administrator
        [1] => C-Level
        [2] => Consultant
        [3] => Director
        [4] => Executive
        [5] => Manager
        [6] => Others
        [7] => President/VP
        [8] => Profession Service
        [9] => Professional
    )

[job_function] => Array
    (
        [0] => Accounting / Finance
        [1] => Administration
        [2] => Customer Service
        [3] => Education
        [4] => Executive Management / C-Suite
        [5] => Human Resource
        [6] => IT / ALL
        [7] => IT / Application & Programming
        [8] => IT / Data & Database
        [9] => IT / Network & Infrastructure
        [10] => IT / Security & Compliance
        [11] => Legal
        [12] => Logistics / Facility / Warehouse
        [13] => Manufacturing
        [14] => Marketing / PR / Event
        [15] => Media / Communications
        [16] => Medical / Healthcare Services
        [17] => Operations
        [18] => Others
        [19] => Product Development
        [20] => Project Management
        [21] => Public Service / Policy Makers
        [22] => Purchasing / Procurement
        [23] => Quality Assurance
        [24] => Real Estate
        [25] => Research / Development
        [26] => Risk / Safety / Security
        [27] => Sales / Business Development
    )

[contact_status] => Array
    (
        [0] => Active
        [1] => Deceased
        [2] => Fired
        [3] => Quit
        [4] => Retired
        [5] => Suspended
    )

[no_of_pcs] => Array
    (
        [0] => A: 1 - 4
        [1] => B: 5 - 9
        [2] => C: 10 - 14
        [3] => D: 15 - 19
        [4] => E: 20 - 49
        [5] => F: 50 - 74
        [6] => G: 75 - 99
        [7] => H: 100 - 149
        [8] => I: 150 - 199
        [9] => J: 200 - 299
        [10] => K: 300 - 499
        [11] => L: 500 - 799
        [12] => M: 800 - 999
        [13] => N: 1,000 - 1,999
        [14] => O: 2,000 - 4,999
        [15] => P: 5,000 - 9,999
        [16] => Q: 10,000 - 24,999
        [17] => R: 25,000 - 49,999
        [18] => S: 50,000 - 99,999
        [19] => T: >= 100,000
        [20] => Z: NOT CODED
    )

[no_of_servers] => Array
    (
        [0] => A: 1 - 4
        [1] => B: 5 - 9
        [2] => C: 10 - 14
        [3] => D: 15 - 19
        [4] => E: 20 - 49
        [5] => F: 50 - 74
        [6] => G: 75 - 99
        [7] => H: 100 - 149
        [8] => I: 150 - 199
        [9] => J: 200 - 299
        [10] => K: 300 - 499
        [11] => L: 500 - 799
        [12] => M: 800 - 999
        [13] => N: 1,000 - 1,999
        [14] => O: 2,000 - 4,999
        [15] => P: 5,000 - 9,999
        [16] => Q: 10,000 - 24,999
        [17] => R: 25,000 - 49,999
        [18] => S: 50,000 - 99,999
        [19] => T: >= 100,000
        [20] => Z: NOT CODED
    )

[installed_product] => Array
    (
        [0] => Avtech
        [1] => Symantec NetBackup
        [2] => Symantec Storage Foundation
        [3] => Yardi
        [4] => Secure
        [5] => Symantec Veritas
    )

[export_session_id] => 8C457309B7

)

we have to select the desired fields from the above matching list and take the result count.

The result we get is joining both tables and matching count for ‘corporate’ and ‘contacts’