javascript - MongoDB:过滤文档中的多个数组,然后将重复的数组返回为一个数据

标签 javascript arrays mongodb sorting aggregation-framework

我的数据库中有这些数据集:

[{
  "id": 1,
  "date": "2019/11/30",
  "title": "Data Title",
  "tags": ["Javascript", "NodeJS", "Big Data", "MongoDB"],
},{
  "id": 2,
  "date": "2019/10/30",
  "title": "Data Title 2",
  "tags": ["Javascript", "React", "NodeJS", "Postgres"],
}]

目前我想要的是通过返回如下值的标签对数据进行分组:
[{
  "id": 1,
  "tags": "Javascript",
  "data": [{
    "date": "2019/11/30",
    "title": "Data Title",
   },{
     "date": "2019/10/30",
     "title": "Data Title 2",
   }],
   "count": 2
 }, {
   "id": 2,
   "tags": "React",
   "data": [{
     "date": "2019/10/30",
     "title": "Data Title 2",
   }],
   "count": 1
}]

问题 : 如何使用 mongodb 聚合查询获取数据?非常感谢!

最佳答案

您需要 $unwind tags数组并执行 $group聚合就可以了。

db.collection.aggregate([
  { "$unwind": "$tags" },
  { "$group": {
    "_id": "$tags",
    "data": {
      "$push": {
        "title": "$title",
        "date": "$date"
      }
    },
    "count": { "$sum": 1 }
  }}
])

关于javascript - MongoDB:过滤文档中的多个数组,然后将重复的数组返回为一个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354800/

相关文章:

javascript - Jquery UI 更改 slider 句柄宽度?

javascript - 如何使用node.js计算最大数量?

ruby-on-rails - 使用 Mongoid 使整个模型只读

python - 使用 Tweepy 获取推文时出错

javascript - jQuery 动画函数不适用于显示和 -webkit-transform 属性

javascript - 在 ASP.net MVC 5 应用程序中单击按钮时使用 JavaScript/jQuery 将用户重定向到页面

java - 比较来自 CSV 的两个数组列表

ios - 我如何使用服务器中的数组并在服务中显示

javascript - 我在 Javascript 中有一个对象数组。如何循环遍历它以查找 'fname' 键的出现次数

javascript - 如何使用express.js和mongoclient将数组插入mongodb