javascript - 如何通过猫鼬中的用户ID一次选择两个表(文档)值?
问题描述
我正在使用 NodeJs、ExpressJs 与 Mongodb 和 Mongoose。我想通过用户 ID 选择两个文档的值。
我有三个模型用户,学术和职业。我通过用户模式的 _id 与学术和职业模式建立了关系。我在这些文档中保存了一些值。现在我想通过用户 ID 选择学术和职业的文档值。
模型
// user model
const userSchema = new mongoose.Schema({
name: {type: String},
email: {type: String},
});
const user = mongoose.model('User', userSchema);
// academic model
const academicSchema = new mongoose.Schema({
academicLevel: {type: String},
passYear: {type: Number},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
});
const academic = mongoose.model('Academic', academicSchema);
// career model
const careerSchema = new mongoose.Schema({
jobTitle: {type: String},
company: {type: String},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
});
const career = mongoose.model('Career', careerSchema);
文件
// user documents
_id: objectId("5d0df6a4134d4d295ca9f212")
name: "John Doe"
email: "john@gmail.com"
_id: objectId("5d0e70a6c87ca528c0a79a0f")
name: "Mark Boucher"
email: "mark@gmail.com"
// academic documents
_id: objectId("5d60bc7188a8ef3648b8e8cf")
academicLevel: "Master"
passYear: "2018"
user: objectId("5d0e70a6c87ca528c0a79a0f")
_id: objectId("5d60d56f0cf9af32901cb2aa")
academicLevel: "Bachelor"
passYear: "2016"
user: objectId("5d0e70a6c87ca528c0a79a0f")
// career documents
_id: objectId("5d60bc1d88a8ef3648b8e8ce")
jobTitle: "Software Engineer"
company: "Daffodil Software Ltd."
user: objectId("5d0e70a6c87ca528c0a79a0f")
节点
router.get('/getInfoById', async (req, res) => {
const user = await User
.find(req.query.id)
.select()
res.send(user);
})
如何通过用户 ID 从两个文档(学术和职业)中获取值。谢谢。
解决方案
对于我在文档中阅读的内容,我认为您正在寻找的是这样的:
const career = await Career.find({ user: user._id});
const academics = await Academics.find({ user: user._id});
或者,如果您想同时执行两个查询:
const careerOperation = Career.find({ user: user._id});
const academicsOperation = Academics.find({ user: user._id});
const [
career,
academics
] = await Promise.all([career.exec(), academics.exec()]);
希望有所帮助!
推荐阅读
- python - 无法使用 Selenium 和 Python 在 Instagram 上滚动点赞页面
- android - 如何在 Fragment 中使用 Compose?
- php - Codeigniter,字段未更新,但其他字段将更新
- dynamics-crm - 如何获取任何 crm 实体属性的 edm 数据类型(odata 类型)
- performance - 使用 firebase 实时数据库了解 ionic 4 应用程序的性能问题
- pandas - 根据熊猫中多个列值的条件对行进行分组
- java - 从未格式化的 url 下载图像
- python - 关于 CSV 文件的基本 python 问题
- visual-studio - 如何在 Visual Studio 中使用键盘“向后导航”和“向前导航”?
- python - @jupyterlab/vega6-extension 在哪里?