MongoDB信息请求

时间:2018-03-11 15:45:24

标签: database mongodb

我在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'
  }
})

当我想从特定公司获取用户时。我看到两个选择。按公司查询用户数据库,或查询公司数据库并获取该公司的所有用户引用。我猜用户数据库越大,第一个选项的效率就越低。这是对的吗?

1 个答案:

答案 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