【问题标题】:MongoDB: Filter multiple arrays in document and then return duplicate array into one dataMongoDB:过滤文档中的多个数组,然后将重复的数组返回为一个数据
【发布时间】:2019-12-16 10:32:48
【问题描述】:

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

[{
  "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 聚合查询获取数据?非常感谢!

【问题讨论】:

    标签: javascript arrays mongodb sorting aggregation-framework


    【解决方案1】:

    你需要$unwindtags数组并对其进行$group聚合。

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

    【讨论】:

    • 嗨,Ashh,这就是我需要的!您的回答对大家参考确实有用。非常感谢!
    猜你喜欢
    • 2015-08-26
    • 2013-10-04
    • 2020-03-19
    • 2020-09-22
    • 2014-09-11
    • 2021-11-13
    • 1970-01-01
    • 2018-01-26
    相关资源
    最近更新 更多