我有一個任務架構 -
const taskSchema = new mongoose.Schema({
type: { type: String, default: '' },
status: {type: String },
due_date : {type: Date}
});
status 可以是“已完成”和“待定”。
type 可以是“回電”、“拜訪”和“見面”。
如果當前日期( new Date() )大于due_date,我有另一個狀態稱為“過期”,它是“待處理”的特例,但它僅作為“待處理”存盤在資料庫中。
樣本資料 -
[
{
type: 'Call Back',
status: 'Pending',
due_date: 2021-08-18T05:40:59.007 00:00
},
{
type: 'Site',
status: 'Pending',
due_date: 2021-09-18T05:40:59.007 00:00
},
{
type: 'Call Back',
status: 'Completed',
due_date: ''
},
{
type: 'Meet',
status: 'Pending',
due_date: 2021-11-18T05:40:59.007 00:00
}
]
我想要這樣的東西 -
{
Pending: {
'Call Back' : 1,
'Meet': 0,
'Site' 1
},
Completed: {
'Call Back' : 1,
'Meet': 0,
'Site' 0
},
Overdue: {
'Call Back' : 0,
'Meet': 1,
'Site' 0
}
}
我遇到了困難,因為我的架構中實際上沒有“過期”狀態,但我在分組時需要它。
uj5u.com熱心網友回復:
您可以使用$addFields有條件地將status欄位覆寫為“過期”。然后像往常一樣進行分組和資料整理。
{
"$addFields": {
"status": {
"$cond": {
"if": {
$gt: [
"$due_date",
new Date()
]
},
"then": "Overdue",
"else": "$status"
}
}
}
}
這是Mongo 游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326759.html
上一篇:如何重構MongoDB中的集合
