कैसे एक MongoDB एकत्रीकरण के अंदर क्षेत्रों की गणना करने के लिए? [डुप्लिकेट]

Nov 25 2020

मेरे पास निम्नलिखित कोड हैं:

db.company_suppressions.aggregate([
    {$match: {company_id: ObjectId('5edd3f71c130ea5378977d41')}}, {$group: {"_id": null, emails: {$push: "$email"}, phones: {$push: "$phone"} } },
    {$project: {emails: true, phones: true, _id: false}}
])

यह इसे लौटाता है, जो वास्तव में मैं चाहता हूं:

[
  {
    "emails": ["[email protected]", "[email protected]", "[email protected]", "[email protected]"],
    "phones": ["3331234451", "3331234454", "7423742992", "1740742393", "4321221133"]
  }
]

लेकिन कभी-कभी मुझे केवल संबंधित क्षेत्रों की गिनती देखने की आवश्यकता होती है। वहाँ एक आसान तरीका है कि एकत्रीकरण पाइप लाइन यह इसे वापस करने के लिए है:

[
  {
    "emails": 4,
    "phones": 5
  }
]

जवाब

1 varman Nov 25 2020 at 10:33

आप $sizeकिसी सरणी को गिनने के लिए उपयोग कर सकते हैं ,

db.collection.aggregate([
  {
    $project: {
      emails: {
        $size: "$emails"
      },
      phones: {
        $size: "$phones"
      }
    }
  }
])

कार्य मानगो खेल का मैदान