совокупный массив из двух коллекций mongodb - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть две коллекции: Clinicas и Medicos . Клиник может иметь много 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"}},       

    ])

1 Ответ

0 голосов
/ 29 февраля 2020

Вам нужно конвертировать в 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') } },

])
...