如何在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 之后的输入文档中的字段