盡管查看了許多其他帖子,但我無法弄清楚我做錯了什么。我想做一個簡單的“計數和分組”,所以我發現我需要使用collection.aggregate....
這是我[pubkey].ts執行聚合的地方,基本上我想計算按addresssp 分組的每個條目,我會得到類似的結果:
{address1: 6},
{address2: 1},
...
import { connect } from '../../../utils/db'
import Raffles from '../../../utils/db/raffle'
export default async function handler(req, res) {
const { method } = req
const { pubkey } = req.query
await connect()
switch (method) {
case 'POST':
...
break
case 'GET':
try{
const ticket = await Raffles.aggregate([{
"$match": {
"address": pubkey
}
},{
"$count": { $sum: 1}
}])
res.status(201).json({ success: true, data: ticket })
} catch (error){
res.status(400).json({ success: false, data: error })
}
break
default:
res.status(400).json({ success: false })
break
}
}
我不知道如何做求和部分,如果我替換"$count": "xxyz"我會成功但現在"$count" : {$sum: 1}我得到一個錯誤
有任何想法嗎 ?
uj5u.com熱心網友回復:
如果您使用$count階段,它只接收欄位名稱的字串引數,因此您的管道可能是這樣的:
[
{
"$match": {
"address": pubkey
}
},
{
"$count": "total"
}
]
它過濾與地址匹配的檔案,然后獲取計數。如果你想要按地址分組的檔案計數,你可以在管道中使用這個 $group 階段(在這種情況下$count是一個聚合累加器,所以它不帶任何引數):
[
{
$group: {
"_id": "$address",
"total": {
$count: {}
}
}
}
]
這應該會給你一些這樣的結果:
{_id: address1, total: 6}
{_id: address2, total: 1}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438883.html
