Поле «$ name» должно быть объектом-аккумулятором - PullRequest
0 голосов
/ 30 января 2019

У меня есть запрос, и когда я использую $ group , ошибка показывает, что «поле» $ name должно быть объектом-накопителем », если при удалении поля« $ name »все работает хорошо, и япопытался использовать только «имя» вместо «$ name», и ошибка продолжается.

   User.aggregate([
    {
      $match: {
        "storeKey": req.body.store        
      }
  },
  {
      $group: {
          "_id": "$_id",          
          "name": "$name",              
          "count": {
              "$sum": 1
          },
          "totalValue": {
              "$sum": "$value"
          }      
      }
  },
  {
    $sort: sort
  },
  {
     $skip: req.body.limit * req.body.page
  },
  {
     $limit: req.body.limit
  }
])...

Ответы [ 2 ]

0 голосов
/ 30 января 2019
$group: {
    _id:"$_id", 
    "name" :{ $last: '$name' }, 
    "count" : { $sum: 1 }, 
    "totalValue": { "$sum": "$value" }
}
0 голосов
/ 30 января 2019

Существуют некоторые операторы агрегирования, которые могут использоваться только в агрегации $group и называются $group accumulators

Так же, какВы использовали $sum, здесь вы также должны использовать клавишу name

{ "$group": {
  "_id": "$_id",
  "name": { "$first": "$name" },
  "count": { "$sum": 1 },
  "totalValue": { "$sum": "$value" }
}}
...