mongoose用aggregate查询时要如何优化_id字段?

出现场景

因为实际开发时,团队不太习惯使用_id字段,因此要优化_id使之重命名成id,下面是本人的解决方案。

解决方案

方案一

使用变换函数,设置它的返回值,但是这个方案好像只对find查询语句生效,而对aggregate不起作用,希望大佬解答一下┻┳|・ω・)

// theme.model.js
ThemeSchema.options.toJSON = {
    virtuals: true,
    transform(doc, ret) {
        ret.id = ret._id
        delete ret._id
    }
}
const Theme = mongoose.model("Theme", ThemeSchema,"theme")

方案二

通过aggregate上的project投影设置id映射到_id上,但是这种方案字段多的时候写会很繁琐

const list = await Theme.aggregate([
      {
          $lookup: {
              from: "star",
              localField: "_id",
              foreignField: "theme_id",
              as: "star"
          },
      },
      {
          $project: {
              id: "$_id",
              user: "$user",
              _id: "$-"
              ...
          }
      }
  ]).skip(offset).limit(limit)

以上就是本人两种解决方案,欢迎大佬补充。QAQ

阅读 969
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏