[英]MongDB Aggregate two values with same name
我的代碼中有以下聚合函數來計算在數據庫中找到值的次數:
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 相同的那些進行分組? 目前,它分別計算它們。
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
是一個對象,這將完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.