我的代碼中有以下聚合函式來計算在資料庫中找到值的次數:
let data: any = await this.dataModel.aggregate(
[
{
$match: {
field: new ObjectID(fieldID),
},
},
{
$group: {
_id: "$value",
total_for_value: { $sum: 1 },
},
},
]
);
這可以正常作業,但是我的資料設定有點不同。我有兩種型別的值欄位。有些像這樣:
{
"_id" : ObjectId("123"),
"value" : "MALE"
}
有些像這樣:
{
"_id" : ObjectId("456"),
"value" : {
"value" : "MALE",
}
}
有沒有辦法對 _id 和 _id.value 相同的那些進行分組?目前,它分別計算它們。
uj5u.com熱心網友回復:
db.collection.aggregate([
{
"$addFields": {
"key2": {
"$cond": {
"if": {
$and: [
{
"$eq": [
{
"$type": "$key"
},
"object"
]
}
]
},
"then": "$key.value",
"else": "$key"
}
}
}
},
{
"$group": {
"_id": "$key2",
"data": {
$push: "$$ROOT"
}
}
}
])
如果_id.value是一個物件,這將完成這項作業。
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/491464.html
標籤:javascript mongodb 总计的
