Javascript Mongoose-like SQL具有最新日期

Javascript Mongoose-like SQL具有最新日期,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图用猫鼬找到我收集的所有数据,但我有一些问题需要理解。 现在我用 const mongoose = require('mongoose'); const CaseSchema = new mongoose.Schema({ szenario: { type: String, default: 'deprecated' }, name: { type: String, default: 'test'

我试图用猫鼬找到我收集的所有数据,但我有一些问题需要理解。 现在我用

const mongoose = require('mongoose');

const CaseSchema = new mongoose.Schema({
    szenario: {
        type: String,
        default: 'deprecated'
    },
    name: {
        type: String,
        default: 'test'
    },
    date: {
        type: Date,
        default: Date.now
    }
});

const Case = mongoose.model('tests', CaseSchema);

module.exports = Case;
这个电话的想法是:

Case.find().distinct(name).exec();

但是我如何使用mongoose为最新日期选择不同的名称?

要使用最新日期获得不同的名称,您需要使用运算符执行MongoDB聚合:

Case.aggregate([
  {
    $sort: {
      name: 1,
      date: 1
    }
  },
  {
    $group: {
      _id: "$name",
      data: {
        $last: {
          date: "$date",
          _id: "$_id"
        }
      }
    }
  },
  {
    $project: {
      _id: "$data._id",
      date: "$data.date",
      name: "$_id"
    }
  }
]).exec((err, cases) => {
    if (err) throw err;
    console.log(cases);
});

你说的最晚日期是什么意思?如果你有{姓名:foo,日期:昨天}和{姓名:foo,日期:今天},你想要什么?不同的名称是foo还是…?很抱歉,混淆了我今天在您的问题中提到的最新日期。它是否解决了您的问题:Case.find{date:{$gte:new date'2020-02-23'}}。distinctname.exec;?嗯,也许我误解了你的评论。日期我不知道,有些条目不是当前日期。比如100个不同的案例,每个案例有20个不同的日期。我希望最终只使用最新日期->最新=最新当前日期的案例。所以,第一个过滤器是名称不同,第二个过滤器是日期。非常感谢。我可以确认这项工作,但我陷入了无法获得参考案例的_id的问题。这个列表很完美,但是以后如何处理列表中的元素呢?为此,我需要箱子的唯一id。如何在console.log中获取此信息?@ingo请再次检查。哦,是的,现在我明白了。有时候,有些台词比千言万语更能解释它。非常感谢。