[英]MongoDB Sort documents by the most recents of three fields
我想按最近的三個字段對集合進行排序。
想象一下,我的每個文檔都有一個字段dates
,里面有 3 個日期。
{
...,
dates: {
dateOne: "2010-01-01"
dateTwo: "2020-01-01",
dateThree: "2015-01-01",
},
...
}
我想獲取按最新日期排序的文檔dates
,在這種情況下為dateTwo
,但最新的可能是另一個文檔中的dateOne
。
知道可能有三個字段或只有一個字段,因為可能有兩個字段。
$max
運算符可以獲取要比較的字段列表。 它將返回最大的一個。 不存在的字段也沒關系,例如,文檔是否缺少dateTwo
並不重要。
db.collection.aggregate([
{
$project: {
_id: 1,
key: 1,
dates: 1,
latestDate: {
$max: [
"$dates.dateOne",
"$dates.dateTwo",
"$dates.dateThree"
]
}
}
},
{
$sort: {
latestDate: 1
}
}
])
(示例)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.