1 回答

TA貢獻1946條經驗 獲得超3個贊
首先,使用bson.D{}而不是bson.M{}。這是因為bson.D{}
應該在順序很重要的情況下使用,例如 MongoDB 命令。
您還可以將整個管道封裝在mongo.Pipeline中。例如:
pipeline := mongo.Pipeline{
? ? {{"$match", bson.D{{"createdata", 10}}}},
? ? {{"$group", bson.D{
? ? ? ? {"_id",? ? ? ? bson.D{{"type", "$type"}}},?
? ? ? ? {"TotalFeeds", bson.D{{"$sum", 1}}},
? ? }}},
? ? {{"$project", bson.D{
? ? ? ? {"type", "$_id.type"},?
? ? ? ? {"TotalFeeds", "$TotalFeeds"},?
? ? ? ? {"_id", 0}},
? ? }},? ? ? ? ??
}
檢查你的Feeds{}結構映射。確保您指定映射bson,即:
type Feeds struct {
? ? Type string `bson:"type"`
? ? TotalFeeds int `bson:"TotalFeeds"`
}
或者,在您的投影階段,$project您對字段使用一致的大小寫。例如,指定所有小寫type和/totalfeeds或所有大寫Type和TotalFeeds。
pipeline := mongo.Pipeline{
? ? {{"$match", bson.D{{"createdata", 10}}}},
? ? {{"$group", bson.D{
? ? ? ? {"_id",? ? ? ? bson.D{{"type", "$type"}}},?
? ? ? ? {"totalfeeds", bson.D{{"$sum", 1}}},
? ? }}},
? ? {{"$project", bson.D{
? ? ? ? {"type", "$_id.type"},?
? ? ? ? {"totalfeeds", "$totalfeeds"},?
? ? ? ? {"_id", 0}},
? ? }},? ? ??
}
然后你不必bson在結構中指定映射:
type MyStruct struct {
? ? Type string?
? ? Total int
}
因此,要么在結構中使用一致的字段名稱大小寫,要么顯式提供映射bson。
- 1 回答
- 0 關注
- 184 瀏覽
添加回答
舉報