我需要獲取不同的 categoryCode 和 categoryName 并使用這種重復檔案數的組合來列印計數。這是匹配操作的一種條件,獲取基于 cat_type 的所有檔案,如果 cat_type 不存在,則在類別回應計數中顯示為 0 樣本資料:
[
{
"cat_id":1,
"categoryCode":"categoryCode1",
"categoryName":"categoryName1",
"cat":[
{
"type":"A"
},
{
"type":"B"
},
{
"type":"C"
}
]
},
{
"cat_id":2,
"categoryCode":"categoryCode1",
"categoryName":"categoryName1",
"cat":[
{
"type":"A"
}
]
},
{
"cat_id":3,
"categoryCode":"categoryCode2",
"categoryName":"categoryName2",
"cat":[
{
"type":"C"
}
]
},
{
"cat_id":4,
"categoryCode":"categoryCode3",
"categoryName":"categoryName3",
"cat":[
{
"type":"A"
}
]
}
]
預期輸出:這里與 type='A' 匹配,category1 和 category3 有 type='A' 然后 count 正常列印但 category2 沒有這個 cat_type 然后 category2 也顯示回應 cat_count=0
[
{
"categoryCode":"categoryCode1",
"categoryName":"categoryName1",
"cat_count": 2
},
{
"categoryCode":"categoryCode2",
"categoryName":"categoryName2",
"cat_count": 0
},
{
"categoryCode":"categoryCode3",
"categoryName":"categoryName3",
"cat_count": 1
}
]
我正在使用查詢 - 但查詢與外部欄位一起作業,但不適用于基于陣列的條件
db.collection.aggregate([
{
"$group":{
"_id":{
"categoryCode":"$categoryCode",
"categoryName":"$categoryName"
},
"catCount":{
"$sum":{
"$cond":{
"if":{
"$eq":[
"$cat.type",
"A"
]
},
"then":1,
"else":0
}
}
}
}
},
{
"$project":{
"categoryCode":"$_id.categoryCode",
"categoryName":"$_id.categoryName",
"catCount":1,
"_id":0
}
}
])
uj5u.com熱心網友回復:
您可以先嘗試評估/計算陣列中type: A元素的數量。然后結果在得到你的答案。cat$reduce$sum$group
{
"$group": {
"_id": {
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
},
"catCount": {
"$sum": {
"$reduce": {
"input": "$cat",
"initialValue": 0,
"in": {
"$cond": {
"if": {
$eq: [
"$$this.type",
"A"
]
},
"then": {
// add 1 to accumulator if type is A
$add: [
"$$value",
1
]
},
// otherwise, simply keep the accumulator as-is
"else": "$$value"
}
}
}
}
}
}
}
這是Mongo 游樂場供您參考。
uj5u.com熱心網友回復:
只需要使用$in運算子條件而不是$eq運算子條件,
{
$group: {
_id: {
"categoryCode": "$categoryCode",
"categoryName": "$categoryName"
},
"cat_count": {
$sum: {
$cond: [{ $in: ["A", "$cat.type"] }, 1, 0]
}
}
}
}
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330094.html
標籤:MongoDB 猫鼬 mongodb-查询 聚合框架 spring-data-mongodb
下一篇:怎樣才能防止sed插入空白?
