我在 mongoDB 中有以下聚合管道:
[
{
"$match": {}
},
{
"$facet": {
"total": [
{
"$count": "rows"
}
],
"data": [
{
"$skip": 0
},
{
"$limit": 200
}
]
}
},
{
"$project": {
"total": {
"$first": "$total.rows"
},
"data": 1
}
}
]
如果有匹配項,聚合作業正常:例如:聚合結果(如果我的集合中有 2 個檔案)
{
data: [{firstName: "Bob"}, {firstName: "Marry"}],
total: 2
}
但是當沒有匹配項時它不起作用:這是聚合回傳的內容(如果我的集合中有 0 個檔案)
{
data: []
}
我不明白為什么如果沒有匹配項,總數不回傳 0,如下所示:
{
data: [],
total: 0
}
uj5u.com熱心網友回復:
這就是聚合框架的一般運作方式。
如果您想始終在那里有一個號碼,那么您可以$ifNull檢查total:
"total": {
"$ifNull": [
{
"$first": "$total.rows"
},
0,
{
"$first": "$total.rows"
}
]
}
操場示范在這里
$match對于它的價值,如果沒有提供過濾器,你也不需要一開始的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518134.html
