Найдите последнюю дату документа на основе 2 отдельных полей: месяц и год - PullRequest
0 голосов
/ 17 июня 2020

У меня есть документы в mongoDB, которые выглядят следующим образом:

{username:String, paymentYear:Int, paymentMonth:Int}

Я хотел бы найти последний документ с именем пользователя, то есть дату, ближайшую к нашей Date.now (). Как лучше всего этого добиться? Есть ли какой-нибудь запрос mon go, который я могу использовать или должен ли я написать свой собственный код?

Спасибо

1 Ответ

1 голос
/ 17 июня 2020

Это достигается с помощью конвейера агрегации стадий $dateFromParts MongoDB.

db.test.aggregate([
    {
        "$addFields": {
            "tempDate": {
                "$dateFromParts": {
                  year : '$paymentYear', 
                  month : '$paymentMonth',
                }
            }
        }
    },
    {
        "$sort": {"tempDate": -1}  // Change from `-1` to `1` For Ascending Order
    },
    {
        "$limit": 1 // Number of documents to be returned based on the sort order
    },
])

Использование может реализовать это на стадии $project вместо стадии $addFields в зависимости от ваших потребностей для лучшей оптимизации.

Примечание: это будет работать только для MongoDB версии 3.6 и выше.

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