我正在尝试修改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。
答案 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" }
}
}
])