我正在嘗試使用 golang mgo 包執行查詢以有效地從 $group 聚合中獲取相似值并計算總記錄值。但我無法獲取分組數據的總記錄數。我的結構是這樣的:{ "data": [ { "_id": 366, "logs": [ { "id": 113, "booking_id": 366, "provider_id": 13, "cid": 11, "type": "basic", "time": 1542793756, }, { "id": 116, "booking_id": 366, "provider_id": 13, "cid": 0, "type": "type2", } ] }, { "_id": 362, "logs": [ { "id": 104, "booking_id": 362, "provider_id": 7, "cid": 10, "type": "basic", "time": 1542776677, } ] }, { "_id": 370, "logs": [ { "id": 111, "booking_id": 370, "provider_id": 9, "cid": 11, "type": "basic", "time": 1542792661, }, { "id": 112, "booking_id": 370, "provider_id": 11, "cid": 11, "type": "basic", "time": 1542793185, } ] } ], "total_record": 2 }為此,我想要在數據中預設總記錄::"total_record":3 查詢我正在使用 ::query := []bson.M{ {"$group": bson.M{ "_id": "$booking_id", "logs": bson.M{ "$push": "$$ROOT" } "count": bson.M{"$sum":1}, }}, } pipe := getCollection.Pipe(query) err = pipe.AllowDiskUse().One(&result)我想要這個結果的總數。日志部分包含具有不同“provider_id”值的重復預訂數據,但我已將所有類似的 booking_id 數據分組在單個文檔中并顯示它的計數。$group 聚合有可能嗎?
1 回答

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
您可以使用 $count 聚合來查找數據中的總記錄,鏈接
要計算分組數據的總數,可以在分組數據后使用 $count 聚合。如果你想要總計數,你的查詢應該是這樣的data::
query := []bson.M{
{"$group": bson.M{
"_id": "$booking_id",
}},
{"$count" : "count"},
}
pipe := getCollection.Pipe(query)
err = pipe.AllowDiskUse().One(&result)
要計算每個記錄中的記錄,"logs"您可以使用查詢如下:
query := []bson.M{
{"$group": bson.M{
"_id": "$booking_id",
"logs": bson.M{ "$push": "$$ROOT" },
"count": bson.M{"$sum":1},
}},
}
pipe := getCollection.Pipe(query)
err = pipe.AllowDiskUse().One(&result)
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消