Как агрегировать в mgo bson для карты типа поля [string] uint32? - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь получить агрегированные значения из коллекции монго, используя bson и Golang, где поле, используемое в Golang, имеет тип map[string]uint32.

Это структура, которую я использую, и поле Csat.

type Conversations struct {
     ID   bson.ObjectId     `bson:"_id"`
     Csat map[string]uint32 `bson:"csat"`

}

Вывод с использованием bson должен быть в парах ключ-значение, вот несколько примеров, которые я пробовал, но не работал,

1.

bson.M{

    "csat["1"]": bson.M{
        "$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$score", 1}}, 1, 0}},
    },
    "csat["2"]": bson.M{
        "$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$score", 2}}, 1, 0}},
    }

2.

bson.M{
        "csat": bson.M{
            "1": bson.M{
                "$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$score", 1}}, 1, 0}},
            },
            "2": bson.M{
                "$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$score", 2}}, 1, 0}},
            },
        }
    }

Я ожидаю, что он будет храниться как {"csat": {"1": 3}, {"2": 2}, ...}, где значения ключей 3 и 2 могут быть значениями.

Если кто-то делал что-то подобное раньше, можете ли вы помочьменя нет?

Спасибо.

...