我的模型:问题(只有与问题相关的数据被删除所有其他内容)
exports = module.exports = function(app, mongoose) {
var questionSchema = new mongoose.Schema({
difficultyLevel: {
type: String,
enum: ['easy', 'medium', 'hard']
},
questionType: {
type: String,
enum: ['Type1', 'Type2', 'Type3']
},
questionText: {
type: String,
trim: true
}
});
questionSchema.plugin(require('./plugins/pagedFind'));
questionSchema.set('autoIndex', (app.get('env') === 'development'));
app.db.model('Questions', questionSchema);
};
我的数据库中有大约250多个问题。
我的要求:我需要5个RANDOM问题,第一个和第二个问题应该是“Type1”,第三个问题应该是“Type2”,第四个应该是“Type3”,第五个应该是“Type1”
我的想法是实现它:
async.parallel({
Type1: function(callback) {
Question.find({}, {
questionType: "Type1"
}).limit(3).exec(function (err, questions) {
callback(null, questions)
})
},
Type2: function(callback) {
Question.find({}, {
questionType: "Type2"
}).limit(1).exec(function (err, questions) {
callback(null, questions)
})
},
Type3: function(callback) {
Question.find({}, {
questionType: "Type3"
}).limit(1).exec(function (err, questions) {
callback(null, questions)
})
},
},
function(err, results) {
// Take all results here order it as per requirement and return
//results.Type1, results.Type2, results.Type3
// return the result in required order.
})
但我知道这不是有效的方法。当它执行3个查询时,之后也必须更改订单。
问题:最好/更好的方法是什么?
提前致谢:)