2017-10-13 9 views
0

mongodbのデータ構造を変更しようとしていますが、良い方法はわかりません。mongodbのレコードをマージする

現在のデータ:

{"user_id": 123, "prod_id": 123}, 
{"user_id": 123, "prod_id": 234}, 
{"user_id": 123, "prod_id": 345}, 
... 

そして、私は1つの上から下のデータを作成したい:私はいくつかの理由のためにMongoDBを使用する必要がありますけれども、私は、リレーショナルDBを使用する必要があります知っている

{"user_id": 123, "prod_id": [123, 234, 345]}, 
... 

+0

チェックmongo集約 '$ group'とhttps://docs.mongodb.com/manual/reference/operator/aggregation/addToSet/ – Yogesh

答えて

1

あなたはMongoDBの中で、新たな構造のデータを保存するために$outを使用することができます。新しいコレクションに格納するか、同じコレクションを置き換えることができます。同じコレクションの場合は、最初にバックアップしてからテストしてください。

db.collectionName.aggregate([ 
{ 
    $group: 
     { 
     _id:"$user_id", 
     prod_id: { $addToSet: "$prod_id" } 
     } 
    }, 
    { $out : "newCollectionName" } 

]) 

N.B:あなただけの応答として、あなたの期待形式のデータを送信したいが、その後$out段階を必要としないデータ構造を変更しない場合

-1
db.collection.aggregate([ 
      { 
       $group:{ 
        _id:"$user_id", 
        prod_id: { $push: "$prod_id" } 
        } 
      } 

]) 
+0

なぜこれが質問に答えるのかを説明してください – loki

0

https://docs.mongodb.com/manual/reference/operator/aggregation/push/#grp._S_push

db.sales.aggregate(
    [ 
    { 
     $group: 
     { 
      _id: '$user_id', 
      'prod_id': { $push: '$prod_id' } 
     } 
    } 
    ] 
) 
+0

[よくある回答を書くにはどうすればいいですか? ](https://stackoverflow.com/help/how-to-answer)。コードのみの回答は、質問の問題の解決方法を説明していないため、お勧めできません。あなたの答えを更新して、これが何をし、どのように問題を解決するのかを説明する必要があります。 – FluffyKitten

0
db.sales.aggregate([ 
{ 
    $group: 
     { 
     _id:"$user_id", 
     prod_id: { $addToSet: "$prod_id" } 
     } 
    } 

]) 
関連する問題