Mongodb 2集合聚合

doinxwow  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(161)

总结第二个集合中的要点,并将其放入第一个集合中
给定两个集合:

a:

    {
     _id: 123323525245,
     token: "token_1",
     points: 0
    },
    {
     _id: 3454545334
     token: "token_2"
     points: 0
    }

b:

    _id: 1324454:
    lines: [
    {
      token: "token_1",
      points: 20
    },
    {
      token: "token_1",
      points: 10
    },
    {
      token: "token_2",
      points: 12
    }
  ]

我想把集合B中的所有点都归纳为token,并把它放在集合a中期望集合a:

a:
    {
       _id: 123323525245,
       token: "token_1",
       points: 30
    },
    {
       _id: 3454545334
       token: "token_2"
       points: 12
    }

我应该使用什么查询?

soat7uwm

soat7uwm1#

先解开集合B,然后按令牌分组。

db.b.aggregate([
  {
    "$unwind": "$lines"
  },
  {
    "$group": {
      "_id": "$lines.token",
      "points": {
        "$sum": "$lines.points"
      }
    }
  },
  {
    "$lookup": {
      "from": "a",
      "localField": "_id",
      "foreignField": "token",
      "as": "docs"
    }
  },
  {
    "$project": {
      "_id": {
        "$first": "$docs._id"
      },
      "points": "$points",
      "token": "$_id"
    }
  }
])

mongoplayground

相关问题