Mongodb 如何使用Mongo聚合从数组创建不同的项

Mongodb 如何使用Mongo聚合从数组创建不同的项,mongodb,aggregate,Mongodb,Aggregate,我很难理解如何在Mongo中使用聚合管道 鉴于下列文件的清单: db.disks.insertMany([ {u id:“香草圣代”,关键词:[“香草”、“冰淇淋”、“沙漠”], {{u id:“香草蛋糕”,关键词:[“香草”、“蛋糕”、“烘焙”、“沙漠”], {u id:“巧克力蛋糕”,关键词:[“巧克力”、“蛋糕”、“烘焙”、“沙漠”] ]) 如何创建一个聚合,该聚合将按关键字返回不同关键字的列表和文档计数: [ {u id:“香草”,“伯爵”:2}, {u id:“冰淇淋”,“计数”:1

我很难理解如何在Mongo中使用聚合管道

鉴于下列文件的清单:

db.disks.insertMany([
{u id:“香草圣代”,关键词:[“香草”、“冰淇淋”、“沙漠”],
{{u id:“香草蛋糕”,关键词:[“香草”、“蛋糕”、“烘焙”、“沙漠”],
{u id:“巧克力蛋糕”,关键词:[“巧克力”、“蛋糕”、“烘焙”、“沙漠”]
])
如何创建一个聚合,该聚合将按
关键字
返回不同关键字的列表和文档计数:

[
{u id:“香草”,“伯爵”:2},
{u id:“冰淇淋”,“计数”:1},
{u id:“沙漠”,“伯爵”:3},
{u id:“烘焙”,“计数”:2},
{u id:“蛋糕”,“计数”:2},
{u id:“巧克力”,“计数”:1}
]

您可以使用
$unwind
$group
解构和重建阵列

db.collection.aggregate([
  {  $unwind: "$keywords" },
  {
    $group: {
      _id: "$keywords",
      count: { $sum: 1 }
    }
  }
])

工作

您可以使用“展开”和“组”操作符来实现这一点

db.collection.aggregate([ { "$unwind": { path: "$keywords" } }, { "$group": { "_id": "$keywords", "count": { $sum: 1 } } }, ])
这应该能奏效!:)


我正在连接MongoDB游乐场。

答案对您有帮助吗?完美解决方案谢谢!