聚合:Mongodb聚合查询示例

记录是数据库:

[
  {
    "title": "title1",
    "author": [
      {
        "name": "user1",
        "register": true
      },
      {
        "name": "user2",
        "register": true
      }
    ],
    "tags": [
      "tag1",
      "tag2",
      "tag3"
    ]
  },
  {
    "title": "title2",
    "author": [
      {
        "name": "user1",
        "register": true
      },
      {
        "name": "user2",
        "register": true
      }
    ],
    "tags": [
      "tag1",
      "tag2",
      "tag3"
    ]
  },
  {
    "title": "title3",
    "author": [
      {
        "name": "user1",
        "register": true
      },
      {
        "name": "user2",
        "register": true
      }
    ],
    "tags": [
      "tag1",
      "tag2",
      "tag3"
    ]
  }
]

预期输出:

{"tag":"tag1", "titles":["title1","title2","title3"], "size":3}
{"tag":"tag2", "titles":["title2","title4"], "size":2}

有人可以帮助汇总查询吗?

回答

您可以使用组

  • $unwind 解构数组
  • $group 根据标签重新组合
  • $project 显示所需的输出

这是代码,

db.collection.aggregate([
  { "$unwind": "$tags" },
  {
    "$group": {
      "_id": "$tags",
      "titles": { "$push": "$title" }
    }
  },
  {
    $project: {
      tag: "$_id",
      titles: 1,
      size: { $size: "$titles" },
      _id: "$$REMOVE"
    }
  }
])

工作Mongo 游乐场


以上是聚合:Mongodb聚合查询示例的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>