Mongodb $lookup返回所有数据
我在下面的场景中:我有两个集合,medicos和clinicas。Medicos与临床医生的关系是由其目标决定的。我只想让医生在里面。所以我有这个代码:Mongodb $lookup返回所有数据,mongodb,mongoose,aggregation-framework,lookup,Mongodb,Mongoose,Aggregation Framework,Lookup,我在下面的场景中:我有两个集合,medicos和clinicas。Medicos与临床医生的关系是由其目标决定的。我只想让医生在里面。所以我有这个代码: Clinicas.aggregate([ $group: { _id: { nome: "$nome" } } }, { $lookup
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 formedicos
如果我设置foreignField:“\u id”它返回结果中的任何数据查找,源文档实际上不包含localField,即该结果中没有medico.medicoId
字段,可能是因为它被$group删除了。目标集合中的文档不包含\u id.\u id
字段$查找将localField:missing与foreignField:missing匹配,提供所有文档。@Joe,谢谢。它现在起作用了$组在错误的位置。多亏了你,现在一切都好了^^