Я хочу знать, сколько пользователей связано с моим офисом, и для этого я использую опцию подсчета для виртуальной схемы.
Схема офиса:
const OfficeSchema = mongoose.Schema({
name: { type: String },
admin: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
}, { toJSON: { virtuals: true } });
Схема пользователя:
const UserSchema = mongoose.Schema({
email: { type: String, unique: true, required: true },
first_name: { type: String },
last_name: { type: String },
office: { type: mongoose.Schema.Types.ObjectId, ref: 'Office' },
}, { toJSON: { virtuals: true } });
Офис-пользовательские отношения:
OfficeSchema.virtual('usersCount', {
ref: 'User',
localField: '_id',
foreignField: 'office',
justOne: false,
count: true
});
Когда я добавляю аргумент запроса к методу find, он работает нормально, я получаю количество пользователей для определенного офиса.
Office.find({ admin: userId }).populate([
{ path: 'admin', select: '_id email first_name last_name' },
{ path: 'usersCount', select: '_id' }
]);
Но когда нет объекта запроса (то есть подсчитать все офисы и количество их пользователей), я получаю одинаковое количество пользователей для каждого офиса, общее количество.
Я просто хочу получить ассоциированное количество пользователей для каждого офиса. Это возможно?