使用猫鼬进行 $lookup

2023-12-13

我有两个集合,例如清单和任务。两个模式如下所示

清单架构如下所示

{
  "_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 输出是空的。 任何帮助是极大的赞赏。提前致谢!


Mongoose 将数据库名称复数所以而不是使用AuditTask你应该使用audittasks

OR

您可以首先将数据库导入文件中,如下所示:

// ESM:
import AuditTask from './AuditTask'
// or CommonJS: 
const AuditTask = require('./AuditTask')

并在你的$lookup聚合:

{ '$lookup': {
  'from': AuditTask.collection.name,
  'localField': '_id',
  'foreignField': 'checklist_id',
  'as': 'TaskData'
}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用猫鼬进行 $lookup 的相关文章

随机推荐