2013-09-27 6 views
5

Sto costruendo una query di pipeline di aggregazione con il comando $substr da MongoDB ma non so come rappresentare la matrice richiesta in Vai con il driver mgo perché contiene diversi tipi di valori (stringa, int).Come rappresentare una matrice con tipi misti

Ecco la query in javascript:

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

Che cosa questo sta cercando di fare è ottenere il sottostringa di dt (dalla fase precedente di aggregazione) con partenza indice 0 fino indice 6.

In Vai ho ottenuto:

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

ma ["$dt",0,6] non è una rappresentazione corretta e tutto quello che ho provato sembra fallire.

+0

Se i dati ottenuti contengono tipi misti, di solito è meglio distribuire una struttura per questo. Questo ti dà sicurezza del tipo e rende il tuo codice più facile da capire per gli altri. – fuz

risposta

10

È possibile rappresentare questi valori utilizzando una fetta di tipo []interface{}:

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

Se si trova la sintassi un po 'sporco, si può facilmente definire un tipo di locale per farlo sembrare più bello:

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