Мангуст отличные значения с сортировкой - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь реализовать distinct() с sort(), но он не работает. В документации также сказано, что он не поддерживается, поэтому я попытался использовать aggregate(), чтобы найти значения.

С distinct() я пытаюсь как

HISTORY.distinct("source", { "sourcedBy": "Nithin" }, function (error, source) {
   console.log(source);
});

Я получаю вывод, но я хочу, чтобы результаты основывались на нисходящем _id и ограничивались тремя последними различными значениями.

Такиспользуя aggregate() Я написал такой запрос

HISTORY.aggregate([
{ "$match": { "sourcedBy": "Nithin" } },
        { "$group": { _id: { source: "$source" } } },
        { "$project": { _id: 0, source: "$_id.source" } },
        { "$limit": 3 },
        { "$sort": { _id: -1 } }
    ]).exec((err, source) => {
        if (err) throw err;
        console.log(source);
    });

Но он дает пустой массив.

Я что-то не так делаю?

1 Ответ

0 голосов
/ 28 января 2019

Вы можете использовать ниже агрегации

const source = (await HISTORY.aggregate([
  { "$match": { "sourcedBy": "Nithin" } },
  { "$group": { "_id": "$source", "createdAt": { "$max": "$createdAt" }}},
  { "$sort": { "createdAt": -1 }},
  { "$limit": 3 }
])).map(({ _id }) => _id)

console.log(source)
...