Mongodb $lookup返回所有数据

Mongodb $lookup返回所有数据,mongodb,mongoose,aggregation-framework,lookup,Mongodb,Mongoose,Aggregation Framework,Lookup,我在下面的场景中:我有两个集合,medicos和clinicas。Medicos与临床医生的关系是由其目标决定的。我只想让医生在里面。所以我有这个代码: Clinicas.aggregate([ $group: { _id: { nome: "$nome" } } }, { $lookup

我在下面的场景中:我有两个集合,medicosclinicas。Medicos与临床医生的关系是由其目标决定的。我只想让医生在里面。所以我有这个代码:

Clinicas.aggregate([
            $group: {
                _id: {
                    nome: "$nome"
                }

            }
        },
        {
            $lookup: {
                from: "medicos",
                localField: "medico.medicoId",
                foreignField: "_id._id",
                as: 'result'
            }
        },
但有点不对劲:它将所有Medico返回为:“result”。例如:我在medicos集合中有4个文档,在clinicas集合中有两个文档。第一个clinicas有2个medicos,第二个有1个,但是as:'result'数组为我提供了2个clinicas集合的所有medicos文档,如您所见

型号medicos

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const MedicoSchema = new Schema({
  //cod_medico:{type:Integer},
  nome:{
    type: String,
    required: true,
    maxlength: 80  
  },
},
);

module.exports = mongoose.model('medicos', MedicoSchema);

在数据库中,集合名称也是“medicos”

错误在组中,首先更改id,然后使用新id加入数据。尝试更改管道的顺序,或删除组阶段。像这样:

db.clinica.aggregate([
    {
        $lookup: {
            from: "medicos",
            localField: "medico.medicoId",
            foreignField: "_id",
            as: 'result'
        }
    },

])

尝试将
外来字段:“\u id.\u id”
更改为
外来字段:“\u id”
。Post please for
medicos
如果我设置foreignField:“\u id”它返回结果中的任何数据查找,源文档实际上不包含localField,即该结果中没有
medico.medicoId
字段,可能是因为它被$group删除了。目标集合中的文档不包含
\u id.\u id
字段$查找将localField:missing与foreignField:missing匹配,提供所有文档。@Joe,谢谢。它现在起作用了$组在错误的位置。多亏了你,现在一切都好了^^