【问题标题】:Need help aggregating mongoose data需要帮助聚合猫鼬数据
【发布时间】:2021-05-06 02:34:53
【问题描述】:

我有一个 MERN 堆栈应用程序,当我进行 GET 调用时,我想返回所有 MongoDB 对象的投票。

这是我的对象的样子:

{_id: ObjectId("6092d48d96984d233cf77152")
user: "John Doe"
movies: [
     0:
          _id: ObjectId("6092b19345f48a33447468a7"),
          title: "Alpha",
          ranking: 3
     1:
          _id: ObjectId("6092b19345f48a33447468a7"),
          title: "Bravo",
          ranking: 2
     2:
          _id: ObjectId("6092b19345f48a33447468a7"),
          title: "Charlie",
          ranking: 1
]}

{_id: ObjectId("6092d48d96984d233cf77152")
user: "John Doe"
movies: [
     0:
          _id: ObjectId("6092b19345f48a33447468a7"),
          title: "Alpha",
          ranking: 3
     1:
          _id: ObjectId("6092b19345f48a33447468a7"),
          title: "Bravo",
          ranking: 2
     2:
          _id: ObjectId("6092b19345f48a33447468a7"),
          title: "Charlie",
          ranking: 1
]}

显然会有更多数据,但基本上我希望它返回:

[{title: "Alpha", ranking: 6},
{title: "Bravo", ranking: 4},
{title: "Charlie", ranking: 2}]

我假设我必须使用 $match 函数,但这是我第一次像这样使用 Mongoose/MongoDB。提前致谢!

【问题讨论】:

    标签: mongodb mongoose aggregation-framework mern


    【解决方案1】:
    • $unwind解构movies数组
    • $group movies.titleranking
    let result = await YourModelName.aggregate([ // replace your model name
      { $unwind: "$movies" },
      {
        $group: {
          _id: "$movies.title",
          ranking: { $sum: "$movies.ranking" }
        }
      }
    ])
    

    Playground

    【讨论】:

    • 完美,非常感谢!我知道电影数组有些奇怪
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2015-05-19
    • 2011-09-23
    相关资源
    最近更新 更多