javascript - 如何获取mongodb中每个类别的最新文章?

标签 javascript mongodb mongoose aggregation-framework

我有下一篇文章结构:

var articleSchema=new Schema({
    id : Number,
    title : String,
    sefriendly : String,
    created : Date,
    categories: [
        {
            id: Number,
            name: String,
            sefriendly: String,
            image: String
        }
    ],
    author: {
        id: Number,
        name: String
    }
});

所以我想要的是根据一组 categoryIdscreated 字段排序一篇最新文章。例如,我有电影、电视、音乐、书籍等类别,我想为每个类别获取最新文章。是否可以在一个查询中完成?

最佳答案

首先为创建日期和类别 ID 创建索引:

db.article.ensureIndex({"created":-1,"categories.id":1})

然后获取最新文章:

db.article.aggregate(    [  {$unwind : "$categories"}     { $sort: {"created":-1,"categories.id":1 } },      {        $group:          {            _id: {"categories_id":"$categories.id"},            lastDate: { $last: "$created" }          }      }  ] ,{"allowDiskUse":true})

也许有一点语法错误

关于javascript - 如何获取mongodb中每个类别的最新文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555968/

相关文章:

javascript - ng-submit 上的 ng-init 范围变量问题

Javascript 获取包含双花括号的元素

javascript - 如何使用 Javascript 从 HTML 中的日期字段捕获日期

node.js - 迭代器函数内完成的所有任务的 Node 、异步和回调

node.js - MongoDB/Mongoose 在特定日期查询?

javascript - 在可定制的 Angular 数据表中使用条件图标

mongodb - Play Framework 2.1 的最佳 mongodb 驱动程序

Mongodb分组和排序

javascript - NodeJs - 优化多个if

heroku - MongoDB Atlas 连接工作但不在 Heroku 中显示数据