【发布时间】:2019-05-26 19:20:08
【问题描述】:
我正在尝试将 $lookup 用于两个表,但在查找后我也得到了不相关的记录。
表用户
{"_id" : ObjectId("5c1f5fe31e11011268006aa7"),"name" : "v","email" : "v@gmail.com"},
{"_id" : ObjectId("5c1f5fd31e11011268006aa6"),"name" : "r","email" : "r@gmail.com",}
订桌
schema like
(student_id: { type: Schema.Types.ObjectId, ref: 'users' },
teacher_id: { type: Schema.Types.ObjectId, ref: 'users' })
{
"_id" : ObjectId("5c1f642aa6fb4511a0511e41"),
"student_id" : ObjectId("5c1f5fd31e11011268006aa7"),
"createdAt" : ISODate("2018-12-23T16:02:10.179+05:30"),
"updatedAt" : ISODate("2018-12-23T16:02:10.179+05:30"),
"__v" : 0,
}
$lookup
db.bookings.aggregate(
{
$lookup:
{
from: "users",
localField: "ObjectId(student_id)",
foreignField: "ObjectId(_id)",
as: "student_info"
}
}
)
结果我得到了两个用户
{
"_id": "5c1f642aa6fb4511a0511e41",
"student_id": "5c1f5fd31e11011268006aa7",
"teacher_id": "5c1f5fe31e11011268006aa6",
"createdAt": "2018-12-23T10:32:10.179Z",
"updatedAt": "2018-12-23T10:32:10.179Z",
"__v": 0,
"student": [
{
"_id": "5c1f5fd31e11011268006aa6",
"name": "r",
"email": "a@gmail.com"
},
{
"_id": "5c1f5fe31e11011268006aa7",
"name": "v",
"email": "v@gmail.com"
}
]
}
但是如果我使用 localField: "student_id", ForeignField: "_id",在查找中我得到的是空白的 student_info 数组
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework