MongoDB:填充或查询两个集合
我有以下架构:
let ProjectSchema = new mongoose.Schema({
title: {
type: String
},
employees: {
user: String, // ==> ObjectId of User from UserSchema
role: String,
workload: Number,
},
description: {
type: String
}
});
let UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
trim: true
},
name: {
type: String
},
projects: {
type: Array // ==> ObjectId of Project from ProjectSchema
}
});
我想要实现的是通过_id
或email
获取用户并获取他的项目中的所有数据,例如:
{
"user": {
"_id": "asdf1234",
"email": "[email protected]",
"name": "Max"
"projects": {
"title": "Project 1",
"description": "Just a text",
"employees": {
"user": "asdf1234",
"role": "developer",
"workload": 40
}
}
}
}
我还希望通过Id获取特定项目,并且employee.user字段应填充正确的用户数据。
我可以用Mongoose populate
做到这一点吗?我的方法是首先做一个User.findOne()
,然后检查project.id和Project.findOne()
。
您在UserSchema中如何引用项目数组,当您查询要查询与用户关联的所有项目的用户时。
let mongoose = require("mongoose");
let Projects = require("./projects");
let UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
trim: true
},
name: {
type: String
},
projects: {
type: [Projects.schema]
}
});
然后,每次查询用户时,它都会附带与用户关联的项目。