2013-02-16 8 views
1

Mongo 데이터베이스의 데이터를 소비하는 응용 프로그램을 작성하고 있지만 데이터를 플랫 형식으로 처리해야합니다. 내 문서에는 문자열 배열로 바꾸려는 배열이 몇 개 있지만 mongo 쿼리로 그 배열을 찾을 수는 없습니다.Mongo Join String Array

문서 :

{ 
    name: 'Hello World', 
    tags: ['simple', 'easy'] 
} 

원하는 출력 :이가 집계 쿼리를 사용하여 아래지만 매우 정적 달성 생각할 수

{ 
    name: 'Hello World', 
    tags: 'simple,easy', 
} 
+0

을 당신이 그렇게'mapReduce'를 사용할 필요가 거라고 생각합니다. 가능한 경우 클라이언트 쪽을 수행하는 것이 좋습니다. – JohnnyHK

+1

문서를 검색 할 때 왜 그렇게하지 않습니까? – WiredPrairie

+0

@ WiredPrairie가 말한 바. 그냥'toString()'을 사용하십시오. – glortho

답변

0

유일한 방법.

db.test.aggregate([ 
    { $unwind: "$tags" }, 
    { $group: { _id: "$_id", name: {$first: "$name"}, firstTag: {$first: "$tags"}, lastTag: {$last: "$tags"} } }, 
    { $project: { name: "$name", tags: { $concat: [ "$firstTag", ",", "$lastTag" ] } } } 
]); 

당신은 그러나 맵리 듀스와이 achive 수 있습니다

db.test.mapReduce(
    function() {emit(this._id, this);}, 
    function(key, value) {return value}, { 
     out:"tags", 
     finalize: function(key, reducedVal){ 
      reducedVal.tags = reducedVal.tags.join(); 
      return reducedVal; 
     } 
    } 
) 

> db.tags.find() 
{ "_id" : ObjectId("5849a9f6a4db9c5811299d08"), "value" : { "name" : "Hello World", "tags" : "simple,easy" } }