2013-09-27 7 views
5

Buduję zapytanie potokowe agregacji za pomocą komendy $substr z MongoDB, ale nie wiem, jak reprezentować tablicę, której wymaga w Go ze sterownikiem mgo, ponieważ zawiera różne typy wartości (string, int).Jak reprezentować tablicę z typami mieszanymi

Oto zapytanie w javascript:

[ {$group: {"_id": {"dt": {"$substr": ["$dt",0,6]}}}} ] 

Co to staramy się robić to uzyskać podciąg dt (z poprzedniego etapu agregacji) z rozpoczęciem indeks 0, a kończąc indeks 6.

Przejdź mam:

[]bson.M{"$group": bson.M{"_id": bson.M{"dt": bson.M{"$substr": ["$dt",0,6]}}}}} 

ale ["$dt",0,6] nie jest poprawna reprezentacja i wszystko próbowałem wydaje się niepowodzeniem.

+0

Jeśli otrzymane dane zawierają typy mieszane, zwykle lepiej jest zaimplementować dla niego strukturę. Daje to bezpieczeństwo typu i sprawia, że ​​kod jest łatwiejszy do zrozumienia dla innych. – fuz

Odpowiedz

10

Można reprezentowania tych wartości za kromkę typu []interface{}:

l := []interface{}{"$dt", 0, 6} 

Jeśli znajdziesz składnię trochę brudne, można łatwo określić rodzaj lokalnej, aby wyglądać ładniej:

type list []interface{} 
    l := list{"$dt", 0, 6}