我有有哪些需要填充路径的猫鼬模型:猫鼬排序的子文档填充
var adsSchema = new Schema({
price: { type: Number, min: 0, required: true },
author: { type: ObjectId, ref: 'Users', required: true },
title: { type: String, required: true },
date: { type: Date, default: Date.now },
offers: [{
price: { type: Number, required: true },
date: { type: Date, default: Date.now },
offerBy: { type: ObjectId, ref: 'Users', required: true }
}],
category: { type: ObjectId },
images: [{
type: ObjectId,
ref: 'Images'
}],
videos: [String]
});
在一些GET请求,我需要填充的众多领域,因为我说的,特别是提供带有排序按'价格'按升序排列。
由于Mongoose的文档显示在那里(http://mongoosejs.com/docs/api.html#query_Query-populate),您可以按子路径进行排序。
我的问题是,事实并非如此。
还有就是我的代码,这样做是:
Ads.findOne({ _id: adId })
.populate({ path: 'author', select: 'firstName lastName' })
.populate('images')
.populate({ path: 'offers', options: { sort: { 'price': -1 } })
.populate({ path: 'category', select: 'name' })
.exec(function (err, ad) {
if (err)
deferred.reject({ status: 500, message: 'Database error.' });
else if (!ad)
deferred.reject({ status: 500, message: 'The ad doesn\'t exist!.' });
else {
deferred.resolve(ad.toJSON());
}
})
我已阅读尽可能多的问题/答案在这里或在猫鼬邮件列表,并提供:
我知道不可能从子文档结果排序文档结果,OK。但我只想对该子文档进行排序,只有这一个。这里有些反应似乎是说这是可能的:
我周围有2个问题:
- 是否有可能(如猫鼬文档写入)在人口中排序一个子文档?
- 它是否与我没有将ObjectId链接到其他架构的事实相关联?
谢谢您的回答;)