我的檔案看起來像這樣
[{
"updatedAt": {
"$date": "2021-12-24T11:58:05.058Z"
},
"__v": 0,
"slots": [{
"isBooked": "true",
"time": "11:15",
"date": "2021-12-26"
}]
},{
"updatedAt": {
"$date": "2021-12-24T11:58:05.058Z"
},
"__v": 0,
"slots": [{
"isBooked": "true",
"time": "11:15",
"date": "2021-12-26"
}]
}]
在進行如下聚合操作時,我正在嘗試連接、合并,但沒有任何效果
Staff.aggregate([
{
$match:{vendorId:payload._id,"slots.date": payload.serviceDate }
}
,
{
$project:{
_id:0,
slots:1
}
},
// { $project: { items: { $concatArrays:"$slots" } } }
// { $unwind: "$slots" },
// {$group: { _id: "$slots"}},
// { $merge : { into : "data", on: "slots" } },
// {$project: { _id: 0,slots: "$_id"} },
])
我得到如下輸出
//[{"slots":[{"isBooked":"true","time":"11:15","date":"2021-12-26"}]},{"slots":[{"time":"08:00","date":"2021-12-26","isBooked":"true"}]}]
我想在單個插槽陣列中輸出類似下面的內容
[{"slots":[{"isBooked":"true","time":"11:15","date":"2021-12-26"},{"time":"08:00","date":"2021-12-26","isBooked":"true"}]}]
如何實作這一目標
uj5u.com熱心網友回復:
詢問
- 將集合中每個檔案的所有陣列連接到一個陣列中
- 組以獲取每個陣列
[[...] [...]] - 減少并連接那些以壓平它們
- concat 不是累加器,所以我們需要 2 個步驟 group reduce
*我不知道您是否需要這個,這將連接通過第一個匹配項的所有陣列,"slots.date": payload.serviceDate如果插槽至少有一個成員使過濾器為真,則也通過,如果您只想保留這些日期,則需要首先過濾每個陣列。
測驗代碼
aggregate(
[{"$match":{"vendorId":payload._id,"slots.date": payload.serviceDate}}
{"$group":{"_id":null, "slots":{"$push":"$slots"}}},
{"$project":
{"_id":0,
"slots":
{"$reduce":
{"input":"$slots",
"initialValue":[],
"in":{"$concatArrays":["$$value", "$$this"]}}}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/396471.html
標籤:MongoDB
