【问题标题】:how to get virtual fields in aggregation query in mongodb?如何在mongodb的聚合查询中获取虚拟字段?
【发布时间】:2020-09-10 00:07:04
【问题描述】:

我有一个带有一个虚拟字段show的模型:

modelSchema.virtual('show').get(function () {
    return true
})

现在,当我在 nodeJS 中使用 find 这样的查询时:

model.find({"$license_id": license_id})

结果,我有虚拟字段show

但是

如果我像这样使用aggregation 查询:

model.aggregate([
    {
        $match: {
            $expr: { $eq: ["$license_id", license_id] }
        }
    }
])

结果,我没有虚拟字段show

如何获取aggregation 查询中的虚拟字段? 你有什么办法解决这个问题吗?

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query mongoose-schema


    【解决方案1】:

    您可以使用$addFields$project 阶段将字段包含在聚合中。 Virtuals 是未保存在数据库中的属性。你必须尝试一个函数来获得所需的值。

    model.aggregate([
        {
            $match: {
                $expr: { $eq: ["$license_id", license_id] }
            }
        },
       $addFields: {
            show: true
        }
    ])
    

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2021-02-16
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      相关资源
      最近更新 更多