2013-07-09 5 views
4

거기에 대해 많은 이야기를하고 있지만 구현시에 잘못된 점을 알 수는 없습니다. 나는 이런 식으로 뭔가를하고 싶은mongo에서 배열 요소를 계산하는 방법

{ 
    "_id" : ObjectId("510a353929e16756d5000009"), 
    "skills" : [ 
    [ 
     "UserEmbed::Author::Skills::Copywriting", 
     "UserEmbed::Author::Skills::Proofreading", 
     "UserEmbed::Author::Skills::Proofreading", 
     "UserEmbed::Author::Skills::Translation", 
     "UserEmbed::Author::Skills::Translation", 
     "UserEmbed::Author::Skills::Translation" 
    ] 
    ] 
} 

:

나는 다음의 문서가

다음
{ 
    "UserEmbed::Author::Skills::Copywriting": 1,  
    "UserEmbed::Author::Skills::Proofreading": 2, 
    "UserEmbed::Author::Skills::Translation": 3 
} 

내가 무엇을 가지고는 (첫번째 $group 내 원래 문서 구조에서 위의 문서를 얻을 수 있습니다) :

aggregate([ { $group: { _id: "$_id", skills: { $addToSet : "$author_profile.skills._type" } } }, { $unwind : "$skills" }, { $group : { _id : "$skills", count: { $sum : 1 } } }]) 

다음과 같이 표시됩니다. 그녀의 문서) :

{ 
    "_id" : [ 
    "UserEmbed::Author::Skills::Copywriting", 
    "UserEmbed::Author::Skills::Copywriting", 
    "UserEmbed::Author::Skills::Copywriting", 
    "UserEmbed::Author::Skills::Translation", 
    "UserEmbed::Author::Skills::Translation", 
    "UserEmbed::Author::Skills::Translation" 
    ], 
    "count" : 1 
} 

$group이 제대로 작동하지 않는 것으로 보입니다. 내가 뭔가를 오해 했니? 문서 감안할 때

답변

6

은 배열의 배열을 포함, 당신은 $skills 대한 두 번째 $unwind을 소개해야 할 것 :

db.so.aggregate([ 
    { $group: { _id: "$_id", 
     skills: { $addToSet : "$author_profile.skills._type" }}}, 
    { $unwind : "$skills" }, 
    { $unwind: "$skills" }, 
    { $group : { _id : "$skills", count: { $sum : 1 } } }]) 

가 생산 :

"result" : [ 
     { 
      "_id" : "UserEmbed::Author::Skills::Translation", 
      "count" : 3 
     }, 
     { 
      "_id" : "UserEmbed::Author::Skills::Proofreading", 
      "count" : 2 
     }, 
     { 
      "_id" : "UserEmbed::Author::Skills::Copywriting", 
      "count" : 1 
     } 
    ], 
"ok" : 1 
+0

들으을! 배열을 중첩했다는 것을 알기에 충분한주의를 기울이지 않았다. –

+0

어떻게 첫 번째'_id'로 결과를 그룹화 할 수 있었는지 아십니까? –

+0

내가 무슨 뜻인지 이해가 안 간다 ... '_id'가 속한 그룹? – WiredPrairie

관련 문제