簡體   English   中英

MongoDB聚合常規求和與唯一鍵求和

[英]MongoDB Aggregation General Summation and Summation By Unique Keys

假設我在經銷商的售車文件中有一組對象:

{
 id: 'randomId',
 model: 'Jetta'
 carId: 'randomId',
 salesmanId: 'salesmenId3'
},
{
 id: 'randomId',
 model: 'Civic'
 carId: 'randomId',
 salesmanId: 'salesmenId2'
},
{
 id: 'randomId',
 model: 'Civic'
 carId: 'randomId',
 salesmanId: 'salesmenId2'
},
{
 id: 'randomId',
 model: 'S200'
 carId: 'randomId',
 salesmanId: 'salesmenId'
},
{
 id: 'randomId',
 model: 'Jetta'
 carId: 'randomId',
 salesmanId: 'salesmenId3'
},
{
 id: 'randomId',
 model: 'Civic'
 carId: 'randomId',
 salesmanId: 'salesmenId2'
},
...

我希望能夠查詢每個salesmanId的汽車總數和每個salesmanId的獨特汽車總數。

例如,如果我匹配“ salesmenId2”,則希望返回此值:

{
 salesmanId: 'salesmenId2',
 totalCars: 3,
 totalUniqueCars: 1
}

這是我到目前為止的內容:

$match: {'salesmanId':  'salesmenId2' },
      {
          $group: {
            _id: '$salesmanId',
            uniqueCars: { $addToSet: '$model'},
            totalCars: { $sum: 1 }
          }
      },
      {
          $unwind:"$uniqueCars"
      },
      {
          $group: {
            _id: "$_id",
            totalUniqueCars: { $sum:1}
          }
      }

現在僅返回總的獨特汽車。 知道我做錯了什么嗎?

您甚至不必使用$unwind ,而可以在“ uniqueCars”數組字段上使用$size運算符,它實際上為您提供了數組的大小。

 db.cars.aggregate([
    {
        $match: { "salesmanId":  "salesmenId2" } 
    }, 
    {
        $group: {
                    _id: "$salesmanId",
                    uniqueCars: { $addToSet: "$model"},
                    totalCars: { $sum: 1 }
                }
    },
    { 
       $project : { 
                     _id : 1, 
                     totalCars : 1, 
                     uniqueCar : { $size : "$uniqueCars" }
                  }
    }
 ])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM