mongodb - $lookup 使用猫鼬
问题描述
我有两个集合,例如清单和任务。两个模式如下所示
清单模式将如下所示
{
"_id": "5b7d0f77e231b6b530b0ee5a",
"audit_checklist_type": "Weekly"
}, {
"_id": "5b7d3f33e7a57f38084efb09",
"audit_checklist_type": "Daily"
}
任务架构如下所示
{
"_id": "5b7d65daf74be318e8378cf9",
"checklist_id": "5b7d3f33e7a57f38084efb09"
}, {
"_id": "5b7d662df74be318e8378cfb",
"checklist_id": "5b7d3f33e7a57f38084efb09"
}
我的查询是
AuditChecklist.aggregate([
{
$match: {
$and: [
audit_checklist_type: "Daily"
]
},
},
{
$lookup: {
from: 'AuditTask',
localField: '_id',
foreignField: 'checklist_id',
as: 'TaskData',
},
},
]).exec()
我正在尝试获得类似的输出
{
"_id": "5b7d3f33e7a57f38084efb09",
"TaskData ": [{
"_id": "5b7d65daf74be318e8378cf9",
"checklist_id": "5b7d3f33e7a57f38084efb09"
},
{
"_id": "5b7d662df74be318e8378cfb",
"checklist_id": "5b7d3f33e7a57f38084efb09"
}
]
}
但对我来说,结果 TaskData 输出是空的。任何帮助是极大的赞赏。提前致谢!
解决方案
Mongooose 将数据库名称复数所以而不是使用AuditTask
你应该使用audittasks
或者
您可以先在文件中导入数据库,例如
import AuditTask from './AuditTask`
or
const AuditTask = require('./AuditTask')
并在您的$lookup
聚合中使用它
{ '$lookup': {
'from': AuditTask.collection.name,
'localField': '_id',
'foreignField': 'checklist_id',
'as': 'TaskData'
}}
推荐阅读
- laravel - 如何从关系中显示经过身份验证的用户数据
- php - 使用php循环在laravel中将数据显示为交叉表
- php - 使用链接一键将多个产品添加到购物车
- java - 将参数与 Spring 应用程序一起使用或测试时如何将参数传递给 Spring Repository
- python-3.x - 我如何计算熊猫的人口?
- angular-material2 - Angular8 i18n for placeholderLabel 文本
- html - 根据 angular4 中选定的下拉项传递 ID
- reactjs - React 门户未显示在顶部
- javascript - Highstock 图表工具提示仅在图表内激活
- image - 谷歌搜索网址,用于按图片搜索