根据 2 个单独的字段查找文档的最新日期:月份和年份



我在mongoDB中有看起来像这样的文档:

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

我想找到用户名的最新文档,这意味着与我们的Date.now((最近的日期。实现它的最佳方法是什么?是否有任何可以使用的 mongo 查询,或者我应该编写自己的代码?

谢谢

这可以使用MongoDB的$dateFromParts阶段聚合管道来实现。

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及更高版本。

最新更新