【问题标题】:aggregate array of two collections mongodb两个集合的聚合数组 mongodb
【发布时间】:2020-06-13 01:44:12
【问题描述】:

我有两个系列:ClinicasMedicosClinicas 可以有很多 Medicos。这种关系是这样建立的:

medico: [{
    medicoId: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'medicos'
    }
  }],

我将有以下 json 结构:

[
    {
        "nome": "clinica teste",
        "medico": [
            {
                "_id": "5e011a3796a5f80e3c0c8d20",
                "medicoId": {
                    "_id": "5dc5eef455a8f61698a0f2cd",
                    "nome": "Hancho Crutis",
                }
            },
            {
                "_id": "5e011a3796a5f80e3c0c8d1f",
                "medicoId": {
                    "_id": "5df16e5746783116709f09b7",
                    "nome": "camilinha",
                }
            }
        ],
    }
]

我想要的是对这些数据进行“连接”。经过长时间的研究,我得到了这个代码,但响应总是空的。有人可以告诉我我做错了什么吗?

Clinicas.aggregate([
        { $unwind: "$medico"},   

        { $lookup: {
            from: "medicos",
            localField: "medicoId._id",
            foreignField: "_id",
            as: 'nome'
        }},

        { $match: {"medicoId._id": "5df16e5746783116709f09b7"}},       

    ])

【问题讨论】:

  • 如果你在最后省略了$match 阶段,它会返回任何东西吗?
  • 返回所有记录
  • 听起来好像有一个文档与该 medicoId._id 作为字符串匹配。文档中的该字段是否包含 ObjectId?
  • 是的,它确实包含一个 ObjectId
  • @augustofrancisco : 由于您在 medico 上设置了 $unwind,因此您的 localField 将是 localField: "medico.medicoId._id",您需要首先检查 nomelookup 阶段返回的内容

标签: node.js mongodb join mongoose aggregation-framework


【解决方案1】:

需要在ObjectId中进行转换,

var mongoose = require('mongoose');

Clinicas.aggregate([
    { $unwind: "$medico" },

    {
        $lookup: {
            from: "medicos",
            localField: "medicoId._id",
            foreignField: "_id",
            as: 'nome'
        }
    },

    { $match: { "medicoId._id": mongoose.Types.ObjectId('5df16e5746783116709f09b7') } },

])

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    相关资源
    最近更新 更多