2014-02-06 1 views
0

MongoDB에서 그룹 작업의 일부로 맵을 만들려고했지만 행운이 없습니다. 다음과 같이MongoDB 집계에서지도를 만들 수 있습니까?

내 문서 구성되어 있습니다 :

나는 모든 "유형"그룹에 원하는 값으로 키로 작가의 이름이 포함 된지도와 노래가 내 통합의 일환으로 예를 들어
type : artist, 
artist : David Bowie, 
song : "Starman" 

. 다음과 같은 출력의 경우 :

[_id : artist, myMap : ["David Bowie" : "Starman"]] 

그러나 이것이 가능한지 확실하지 않습니다. Mongos $ push 연산을 사용해 보았지만 맵을 푸시하려고 할 때 좋아하지 않습니다. 아무도 전에 이것을 시도한 적이 있습니까?

는 Heres는 쿼리가 나는 시도 :

db.music.aggregate(
       { 
        $group: { 
          _id: "$type", 
          myMap : { $push: {"$artist" : "$song" }} 
          } 
       } 
      ) 
+0

이 당신을 위해 무엇을 찾고에 근접 할 수있다 유형 ": 1, \t \t foo는 : {"아티스트 ":"$ 아티스트 ","노래 ":"$ 노래 "} \t}} \t {$ 그룹 : { \t \t"_id ":"$ 유형 ", \t \t "지도": {$ push : "$ foo"} \t} ) –

+0

@orid 감사합니다. 답변으로 표시하고 동의하겠습니다. 완벽하게 작동합니다. – Travis

답변

1

당신이 찾고있는이 가까이 할 수있다 :`db.music.aggregate ( \t {$ 프로젝트 : { \t \t "

db.music.aggregate( 
    {$project : 
     { 
      "type" : 1, 
      foo : { "artist" : "$artist" , "song" : "$song"} 
     } 
    }, 
    {$group : 
     { "_id" : "$type", "map" : {$push: "$foo" }} 
    } 
) 
0

난 당신이 MongoDB를 함께 그렇게 할 수 없다고 생각한다. 그러나 해당 기능을 묻는 Jira Ticket이 있습니다.