簡體   English   中英

MongoDB 按三個字段中最近的排序文檔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM