[英]Mongoose sort the aggregated result
我在解決這個mongodb(貓鼬)問題時遇到了很多困難。
這個架構'推薦'(用戶名,roomId,ll和日期),其集合包含用戶推薦。
我需要獲得最推薦的房間列表(按roomId)。 下面是架構和我嘗試過的mongoose查詢解決方案。
var recommendSchema = mongoose.Schema({
username: String,
roomId: String,
ll: { type: { type: String }, coordinates: [ ] },
date: Date
})
recommendSchema.index({ ll: '2dsphere' });
var Recommend = mongoose.model('Recommend', recommendSchema);
Recommend.aggregate(
{
$group:
{
_id: '$roomId',
recommendCount: { $sum: 1 }
}
},
function (err, res) {
if (err) return handleError(err);
var resultSet = res.sort({'recommendCount': 'desc'});
}
);
從聚合管道返回的結果只是普通對象。 因此,您將排序作為管道階段進行,而不是作為單獨的操作:
Recommend.aggregate(
[
// Grouping pipeline
{ "$group": {
"_id": '$roomId',
"recommendCount": { "$sum": 1 }
}},
// Sorting pipeline
{ "$sort": { "recommendCount": -1 } },
// Optionally limit results
{ "$limit": 5 }
],
function(err,result) {
// Result is an array of documents
}
);
因此,有各種管道運算符可用於$group
或$sort
或$limit
等。 這些可以按任何順序呈現,並且可以根據需要多次呈現。 只是理解一個“管道”階段流動的結果導致下一個行動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.