合并mongodb

时间:2017-10-13 10:48:38

标签: mongodb mongodb-query

我正在尝试修改mongodb中的数据结构,但我不知道这么好。

当前数据:

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

我想从上面创建以下数据:

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

我知道我应该使用关系数据库,但由于某种原因我必须使用mongodb。

4 个答案:

答案 0 :(得分:1)

您可以使用$out将数据保存在mongodb的新结构中。您可以存储新的集合或替换相同的集合。对于同一个集合,先保留备份,然后再进行测试。

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

])

NB:如果您只想将预期的格式数据作为回复发送,但又不想更改数据结构,则不需要$out阶段。

答案 1 :(得分: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' }
         }
     }
   ]
)

答案 2 :(得分:0)

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

])

答案 3 :(得分:-1)

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

])