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"
      }
    }
  }
])

일하는 몽고 놀이터