【问题标题】:mongoose, nodejs, sort by date in a subdocument猫鼬,nodejs,在子文档中按日期排序
【发布时间】:2020-05-02 19:29:49
【问题描述】:

我在尝试按updated_at“post”(子文档)的日期进行排序时遇到问题,代码如下 我按创建顺序查看帖子。我需要按更新日期排序。

var postSchema = new mongoose.Schema({
    post: String,
    created_at: { type: Date, default: Date.now },
    updated_at: Date
});

var UserSchema = new mongoose.Schema({
    username: String,
    password: String,
    posts: [postSchema]
});


app.get("/val",isLoggedIn, function(req, res){
    var aca = req.user._id; 
    User.findById({_id: aca},function(err, myposts){
       if(err){
           console.log(err);
       } else {
           res.render("index", {dataposts:myposts});
       }
    });
    });

【问题讨论】:

  • 感谢您的回复。您认为有什么方法可以在 GET 的这一部分中包含排序。 app.get("/val",isLoggedIn, function(req, res){ var aca = req.user._id; User.findById({_id: aca},function(err, myposts){ if(err){ 控制台.log(err); } else { res.render("index", {dataposts:myposts}); } }); });
  • 也许你可以使用User.findById({_id: aca}).sort({'posts.updated_at': 'desc'}).exec(function(err, myposts) { ... });
  • 谢谢我试过了,但它不起作用。零错误,但它不会对其进行排序。我不知道为什么。
  • 你用的是什么版本的mongoDB,mongoose?

标签: node.js mongodb mongoose


【解决方案1】:

我建议以下, 使用$order_by

User.findById({ $query : {_id: aca},$orderby: {updated_date: -1} })

在最新版本的猫鼬中,这应该可以工作,

User.findById({_id: aca}).sort({updated_at:-1}).exec(function(err, myposts) { ... });

【讨论】:

  • 嗨,同样的结果它不排序。它给了我相同的旧文件顺序。我的mongodb 4.2.1的版本
  • 猫鼬 5.9.11
猜你喜欢
  • 2015-10-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2013-01-22
  • 2011-08-15
  • 2021-01-14
相关资源
最近更新 更多