如何在mongodb的聚合查询中获取虚拟字段?

Posted

技术标签:

【中文标题】如何在mongodb的聚合查询中获取虚拟字段?【英文标题】:how to get virtual fields in aggregation query in 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 查询中的虚拟字段? 你有什么办法解决这个问题吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何在mongodb的聚合查询中获取虚拟字段?的主要内容,如果未能解决你的问题,请参考以下文章

在 MongoDB 的聚合管道中获取 $group 之后的输入文档中的字段

如何在mongodb查询中获取单个字段?

如何在mongodb聚合中检查子字段是不是存在且不为空?

如何使用MongoDB聚合进行分页?

如何通过将数据作为参数传递以过滤 unix 时间戳来查询具有聚合的 mongodb

如何在数组的 mongodb 的子字段中进行聚合和分组?