programing

$name 필드는 누적 개체여야 합니다.

sourcejob 2023. 5. 9. 22:37
반응형

$name 필드는 누적 개체여야 합니다.

쿼리가 있는데 $group을 사용할 때 "$name은 누적 개체여야 합니다"라는 오류 메시지가 나타납니다. 파일 "$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
  }
])...

집계에서만 사용할 수 있고 다음과 같은 이름의 집계 연산자가 있습니다.

당신이 여기서 사용했던 것처럼 당신은 그것을 위해 사용해야 합니다.name열쇠도

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

누산기는 배열로 누적되는 요소의 배열과 같습니다.$first -> 이름 그룹에 들어가는 첫 번째 이름을 지정합니다.

예: 만약 당신이 가지고 있다면,$_id동일하지만 다른 이름["Darik","John"]지정$first다릭 & 유사하게 줄 것입니다.$last존을 줄 것입니다.

$group: {
    _id:"$_id", 
    "name" :{ $last: '$name' }, 
    "count" : { $sum: 1 }, 
    "totalValue": { "$sum": "$value" }
}
db.faq_feedback.aggregate({ 
   $lookup:{ 
      "from":"faq",
      "localField":"question_id",
      "foreignField":"_id",
      "as":"faq"
   }
},
{ 
   $unwind:"$faq"
},

{ 
   $project:{ 
      "question_id":1,
      "lang":"$faq.lang",
      "feedback":"$faq.feedback",
      "question":"$faq.question",
      "yes":{ 
         "$cond":[ 
            { 
               "$eq":[ 
                  "$feedback",
                  "yes"
               ]
            },
            1,
            0
         ]
      },
      "no":{ 
         "$cond":[ 
            { 
               "$eq":[ 
                  "$feedback",
                  "no"
               ]
            },
            1,
            0
         ]
      }
   }
},

{ 
   $group:{ 
      "_id":"$question_id",

      "yes":{ 
         "$sum":"$yes"
      },
      "no":{ 
         "$sum":"$no"
      },
      "question":{"$first":"$question"},
      "lang":{"$first":"$lang"}
   }
},
{ 
   $limit:10000
},
{ 
   $skip:0
})

언급URL : https://stackoverflow.com/questions/54440636/the-field-name-must-be-an-accumulator-object

반응형