Ниже приведены два Mongoose схемы:Как найти поддокументы по критериям + Mongoose/MongoDB
EmployeeSchema:
var EmployeeSchema = new Schema({
name : String,
employeeDetailsId: {
type: Schema.Types.ObjectId,
ref: 'employeedetails'
}
});
EmployeeDetailSchema:
var EmployeeDetailSchema = new Schema({
employeeId: {
type: Schema.Types.ObjectId,
ref: 'employee'
},
statusId: {
type: Schema.Types.ObjectId,
ref: 'status'
}
});
EmployeeDetailSchema данные получают сохраняется по требованию, например, когда определенному статусу присваивается Employee. В этом случае, когда EmployeeDetail документ сохраняется, то соответствующий EmployeeDetailID сохраняется обратно EmployeeSchema в employeeDetailsId
В настоящее время существует двунаправленная связь между EmployeeSchema и EmployeeDetailSchema.
UseCase:
Я хочу, чтобы извлечь все сотрудники, которые помечены особым статусом. Предположим, что идентификатор состояния ввода - 1234
, после чего я хочу получить всех сотрудников, статус которых равен 1234
в документе EmployeeDetail.
Ниже приводится подход, который я попытался использовать Mongoose:
exports.getEmployeesByStatus = function (req, res) {
console.log('Status ID : ' + req.query.statusId);
EmployeeModel.find({'employeeDetailsId.statusId': {$eq: mongoose.Types.ObjectId(req.params.statusId)}})
.exec(function (err, result) {
if (err)res.send('400', {message: 'Unable to fetch employees data by status. Please try again later'});
res.jsonp(result);
});
};
Результата, который возвращается пустой массив, хотя есть сотрудники, которые назначены на некоторые статусы. Является ли мой подход к поиску с Мангустасом правильным?
вы используете вспомогательный документ, или с помощью ссылки на данные работника модели для 'employeeDetailsId'? –
Пара других хороших вопросов о MongoDB: Поиск суб-документов по критериям: [Один] (http://stackoverflow.com/questions/16845191) и [Два] (http://stackoverflow.com/questions/21142524). Думал, что это может помочь другим. – BeingSuman