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