Mongoose - 查找最多没有计数的文档

时间:2015-08-06 08:17:55

标签: mongodb mongoose mean-stack mean.io

我正在使用Mongoose从MongoDB获取数据。这是我的模特。

var EmployeeSchema = new Schema({
      name: String,
      viewCount: { type: Number, default: 0 },
      description: {
        type: String,
        default: 'No description'
      },
      departments: []

    });

我需要找到前5位员工,其中count(viewCount)是按名称排名最高的。

我正在考虑通过使用find()&找到所有员工。然后阅读viewCount属性&产生结果。有没有更好的方法来获得理想的结果。

2 个答案:

答案 0 :(得分:1)

这里所需要的只是.sort().limit()

Employee.find().sort({ "viewCount": -1, "name": 1 }).limit(5)
    .exec(function(err,results) {

});

这是在viewCount之后按名称排序的视图中的前5名员工。

如果您希望在最后五个中按“名称”排序,那么只需对结果进行排序:

Employee.find().sort({ "viewCount": -1, "name": 1 }).limit(5)
    .exec(function(err,results) {
    // sort it by name
    results.sort(function(a,b) {
        return a.name.localeCompare(b.name);
    });
    // do something with results
});

答案 1 :(得分:0)

您可以按视图计数排序,并将搜索结果限制为5。

在代码中它可能如下所示:

Employee
.find()
.sort([['viewCount',-1], ['name',-1]])
.limit(5)
.exec(function(err, results){
  //do something with the results here
});