Я пытаюсь выполнить запрос, используя golang mgo, чтобы эффективно получить похожие значения из объединения.
Моя структура такая:
result: [
{
"_id" : 1,
"booking_id" : 96,
"provider_id" : 20,
"time" : NumberLong(1541158790),
"arrival_time" : NumberLong(1541158863)
},
{
"_id" : 3,
"booking_id" : 96,
"provider_id" : 20,
"time" : NumberLong(1541158908),
},
{
"_id" : 4,
"booking_id" : 95,
"provider_id" : 20,
"type" : "abc",
"time" : NumberLong(1541163544),
"location" : {
"lat" : 30.711858,
"lng" : 76.729649
},
},
{
"_id" : 8,
"booking_id" : 95,
"provider_id" : 20,
"type" : "aaa",
}
]
Мне нужно сгруппировать данные с одинаковым booking_id. Теперь, как я могу получить данные идентичного идентификатора бронирования, используя агрегацию $ group. Я хочу получить данные в следующей структуре: *
result: [
0:[
{
"_id" : 1,
"booking_id" : 96,
"provider_id" : 20,
"time" : NumberLong(1541158790),
"arrival_time" : NumberLong(1541158863)
},
{
"_id" : 3,
"booking_id" : 96,
"provider_id" : 20,
"time" : NumberLong(1541158908),
},
],
1:[
{
"_id" : 4,
"booking_id" : 95,
"provider_id" : 20,
"type" : "abc",
"time" : NumberLong(1541163544),
"location" : {
"lat" : 30.711858,
"lng" : 76.729649
},
},
{
"_id" : 8,
"booking_id" : 95,
"provider_id" : 20,
"type" : "aaa",
}
]
]
Я создал функцию, которая получает результат из этой коллекции и использует $ group следующим образом:
query := []bson.M{
{"$group": bson.M{
"_id": bson.M{"booking_id": "$booking_id"},
"count": bson.M{"$sum": 1}}}}
pipe := getCollection.Pipe(query)
err = pipe.All(&result)
Но он вернет мне этот вывод:
[
{
"id": 0,
"booking_id": 0,
"provider_id": 0
}
]
Здесь я упоминаю только два идентификатора бронирования, в моей базе данных 1000 записей идентификаторов бронирования.
Я хочу показать данные, сгруппированные по идентификатору бронирования. Возможно ли использовать агрегацию mongodb $ group ?? Или, если нет, то как мне добиться этого в mongodb, используя пакет mgo для golang.