mongoosefind并使用多个字段sorting

我在MongoDB中有一个文档模式:

var postSchema = new mongoose.Schema({ domain: { type: String, enum: ['public', 'private'], required: true }, created_at: { type: Date }, last_modified: { type: Date }, data: { start_date: { year: { type: Number, required: true }, month: { type: Number }, day: { type: Number }, hour: { type: Number }, minute: { type: Number } }, end_date: { year: { type: Number }, month: { type: Number }, day: { type: Number }, hour: { type: Number }, minute: { type: Number } } } }); 

而我想要做的是,当执行一个简单的查询来查找所有文档时,返回所有按照对象start_date升序排列的文档,即对象本身表示一个date,并且我想按照升序返回所有文档date。 有没有可能做这样的事情? 如果是的话,怎么样?

如果不可能,我想我可以有一个额外的字段typesDate ,然后使用此字段进行sorting,对不对? 虽然我可能没有完整的对象(年,月,日,小时和分钟)。

请尝试多个sorting字段

 Post.find({}).sort({'data.start_date.year': 1, 'data.start_date.month': 1, 'data.start_date.day': 1, 'data.start_date.hour': 1, 'data.start_date.minute': 1 }).exec(function(err, results){}) 

这样,最好为它build立索引 ,

 postSchema.index({'data.start_date.year': 1, 'data.start_date.month': 1, 'data.start_date.day': 1, 'data.start_date.hour': 1, 'data.start_date.minute': 1}); 

但是,将字段start_date存储为一个Date()types可能会更好。

 Post.find({}) .sort({'data.start_date.year': 1, 'data.start_date.month': 1, 'data.start_date.day': 1, 'data.start_date.hour': 1, 'data.start_date.minute': 1 }) .exec(function(err, result){ });