![](/img/trans.png)
[英]Mongoose query returns nothing, while MongoDB query returns expected results
[英]Mongodb Sum query returns nothing
我有這個活動行集合的例子
{
"_id" : ObjectId("5ec90b5258a37c002509b27d"),
"user_hash" : "asdsc4be9fe7xxx",
"type" : "Expense",
"name" : "Lorem",
"amount" : 10000,
"date_created" : 1590233938
}
我想用這個聚合代碼收集活動的總金額
db.activities.aggregate(
[
{
$group:
{
_id: "$id",
total: { $sum: "$amount" }
}
},
{
$match: { type: "Expense", "user_hash": "asdsc4be9fe7xxx" }
}
]
)
預期結果:{_id:null,總計:xxxxx }
實際結果:
有什么解決方案嗎? 先感謝您
您的查詢有 2 個問題:
_id: "$id",
而您需要指定_id: null
。match
階段。 但是您需要先執行它,因為在您分組之后,結果將類似於:{
"_id": null,
"total": 15
}
如您所見,此 object 沒有原始對象具有的任何字段,因此將匹配0
個結果。 階段的順序很重要,因為基本上每個階段都會根據前一個階段的結果執行一些操作(mongodb 自動優化階段時會有一些例外,但這些階段中的不同順序不會產生不同的結果)。
所以查詢應該是:
db.activities.aggregate(
[
{
$match: { type: "Expense", "user_hash": "asdsc4be9fe7xxx" }
},
{
$group:
{
_id: null,
total: { $sum: "$amount" }
}
},
]
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.