Пн goose как SQL Отличается последней датой - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь найти все данные в моей коллекции с mon goose, но у меня есть некоторые проблемы, чтобы понять. Теперь я использую

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();

Но как я могу выбрать его отдельно для самой новой даты с mon goose?

1 Ответ

1 голос
/ 23 февраля 2020

Чтобы получить отдельное имя с самой последней датой, необходимо выполнить агрегирование MongoDB с оператором $ group :

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);
});

MongoPlayground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...