我在MongoDB中设置了一个数据库。我有两个名为公司和用户的模型。
const companySchema = new Schema({
name: {
type: String,
required: true
},
users: [{
type: Schema.Types.ObjectId,
required: false,
ref: 'User'
}]
});
const userSchema = new Schema({
firstname: String,
lastname: String,
email: { type: String, lowercase: true, unique: true },
password: String,
company: {
type: Schema.Types.ObjectId,
required: false,
ref: 'Company'
}
})
当我想从特定公司获取用户时。我看到两个选择。按公司查询用户数据库,或查询公司数据库并获取该公司的所有用户引用。我猜用户数据库越大,第一个选项的效率就越低。这是对的吗?
答案 0 :(得分:1)
您的上述实施是正确的。如果您想要来自特定公司的用户,您需要查询如下:
const User = require('./modules/user/userSchema');
const { ObjectId } = require('mongoose').Types;
userCtr.getCompany = (req, res) => {
const { companyId } = req.body;
User.find({ company: ObjectId(companyId) }).populate({
path: 'company',
select: 'name'
})
.then((data) => {
res.status(200).json(data);
}).catch((err) => {
res.send(500).json(err);
});
}
它为您提供了users
的所有requested company
。