2016-07-14 24 views
3

集約内の単一の文字列に文字列の配列を '結合'しようとしています。MongoDB集約は、文字列の配列を1つの文字列に結合します。

{ 
    id: 1234, 
    field: 'test' 
} 

コレクション2:1

コレクション:

{ 
    id: 1111, 
    collection1_id: 1234, 
    name: 'Max' 
}, 
{ 
    id: 1112, 
    collection1_id: 1234, 
    name: 'Andy' 
} 

現在の結果(ルックアップなどの後):

{ 
    id: 1234, 
    field: 'test', 
    collection2: ['Max', 'Andy'] 
} 
考える

は、次のデータセットです

望ましい結果:

{ 
    id: 1234, 
    field: 'test', 
    collection2: 'Max, Andy' 
} 

は、単一の文字列に「コレクション2」を参加することが何とか可能ですか?私たちは$concatで試しましたが、文字列しか受け付けません。

+0

これまで持っていたコードを追加してください。 –

答えて

0

この配列を平坦化するには、プロセスをクライアントに移す必要があります。

mongoは新版でいくつかの新しい平坦化オプションを提供しますが、afaikは算術値(平均、最小、最大....)になります。

1

あなたは正しい軌道に乗っていました。

$projectステージの$concat$reduceを追加するだけです。

'collection2': { 
    '$reduce': { 
     'input': '$collection2', 
     'initialValue': '', 
     'in': { 
      '$concat': [ 
       '$$value', 
       {'$cond': [{'$eq': ['$$value', '']}, '', ', ']}, 
       '$$this'] 
     } 
    } 
} 

注:私たちは、連結の大手,を防ぐために$condを使用しています。 $condの代わりに$reduceの前に$substrCPを使用することもできます。

希望すると便利です。

+0

帽子はサムにあります。 – Friedrich

関連する問題