$lookup 返回所有数据
$lookup returning all data
我处于以下情况:我有两个集合,medicos 和 clinicas。 Medicos 通过其 ObjectId 与临床相关。我想要的是只获得里面有医生的诊所。所以我有这个代码:
Clinicas.aggregate([
$group: {
_id: {
nome: "$nome"
}
}
},
{
$lookup: {
from: "medicos",
localField: "medico.medicoId",
foreignField: "_id._id",
as: 'result'
}
},
但有一点不对:它 returns 中的所有医生都为:'result'。例如:我在 medicos 集合中有 4 个文档,在 clinicas 集合中有两个文档。第一个 clinicas 有 2 个 medicos,第二个有 1 个,但是 as: 'result' 数组为我带来了 2 clinicas 集合的所有 medicos 文档,如您所见。
this have 2 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'
}
},
])
我处于以下情况:我有两个集合,medicos 和 clinicas。 Medicos 通过其 ObjectId 与临床相关。我想要的是只获得里面有医生的诊所。所以我有这个代码:
Clinicas.aggregate([
$group: {
_id: {
nome: "$nome"
}
}
},
{
$lookup: {
from: "medicos",
localField: "medico.medicoId",
foreignField: "_id._id",
as: 'result'
}
},
但有一点不对:它 returns 中的所有医生都为:'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'
}
},
])