我有一個具有以下架構的集合:
{
_id: ObjectId,
company: ObjectId,
endTime: date string
}
同一個檔案會有多個檔案company。幾個示例檔案:
{_id: 1, company: companyA, endTime: Jan 1,2022}
{_id: 2, company: companyB, endTime: Feb 11,2022}
{_id: 3, company: companyA, endTime: Jan 3,2022}
{_id: 4, company: companyB, endTime: Jan 4,2022}
{_id: 5, company: companyA, endTime: Feb 21,2022}
{_id: 5, company: companyB, endTime: Jan 1,2022}
現在我想獲取按 endTime (desc) 排序的每個公司的第一個檔案。我嘗試過aggregate但無法完成。
上述檔案的結果:
{_id: 5, company: companyA, endTime: Feb 21,2022}
{_id: 2, company: companyB, endTime: Feb 11,2022}
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
$sort- 按endTimeDESC 排序。$group- 分組company并以第一個檔案 ($first) 作為data欄位。$replaceWith- 將輸入檔案替換為data。
db.collection.aggregate([
{
$sort: {
endTime: -1
}
},
{
$group: {
_id: "$company",
data: {
$first: "$$ROOT"
}
}
},
{
"$replaceWith": "$data"
}
])
示例 Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430444.html
下一篇:錯誤“'mongodump'未被識別為內部或外部命令、可運行程式或批處理檔案。”試圖從mongodb5.0轉儲資料庫
