[英]How can I filter array of objects into MongoDB Document
我使用 Express 作為后端,使用 MongoDB 作為數據庫。 我的模型如下所示:
皮門:
var pymentSchema = new mongoose.Schema({
name: {
type: String,
enum: [
"VISA",
"MASTERCARD",
"CASH",
],
required: [true, "Need a type of pyment"],
},
total: {
type: Number,
default:0
},
});
賬單:
var billingSchema = new mongoose.Schema({
pyments: {
type: [Pyments],
required: true,
default:[]
}});
我存儲的數據如下所示:
"Bill": [
{
"_id": "5fe17af4a0f04d088ca24d36",
"pyments": [
{
"total": 1.6,
"name": "VISA"
},
{
"total": 1.25,
"name": "CASH"
}
]
},
{
"_id": "5fe8d6ede7adc919d4299d02",
"pyments": [
{
"total": 1.61,
"name": "VISA"
},
{
"total": 1.00,
"name": "MASTERCARD"
},
]
},
{
"_id": "5fea68a2eb0e382a50dae7a6",
"pyments": [
{
"total": 2.5,
"name": "VISA"
},
{
"total": 3.38,
"name": "MASTERCARD"
}
]
}]
我想要的只是獲得例如僅在VISA
、 CASH
和MASTERCARD
中的總數,如下所示:(返回對象)
{
"Totals": [
{
"total": 5.71,
"name": "VISA"
},
{
"total": 1.25,
"name": "CASH"
},
{
"total": 4.38,
"name": "MASTERCARD"
}
]
}
我真的不知道在這種情況下該怎么做,任何幫助將不勝感激。
您可以使用聚合方法aggregate() ,並在管道階段以下,
$unwind
解構pyments
數組$group
by pyments.name
並使用$sum
獲取pyment.total
的總和BillSchemaModel.aggregate([
{ $unwind: "$pyments" },
{
$group: {
_id: "$pyments.name",
total: { $sum: "$pyments.total" }
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.