Ren*_*sso 26 mongoose mongodb node.js mongodb-query aggregation-framework
我在解决这个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'});
}
);
Run Code Online (Sandbox Code Playgroud)
Nei*_*unn 56
从聚合管道返回的结果只是普通对象.因此,您将排序作为管道阶段进行,而不是作为单独的操作:
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
}
);
Run Code Online (Sandbox Code Playgroud)
因此,有各种管道运营商可以用于$group
或$sort
或$limit
其他事情.这些可以按任何顺序呈现,并且可以根据需要多次呈现.只是理解一个"管道"阶段流动的结果导致下一个行动.
归档时间: |
|
查看次数: |
28102 次 |
最近记录: |