Du kan inte använda ett gränssnitt i ett dokument av den anledning som du angav. Avkodaren har ingen information om vilken typ som ska skapas.
Ett sätt att hantera detta är att definiera en struktur som innehåller typinformationen:
type NodeWithType struct {
Node Node `bson:"-"`
Type string
}
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []NodeWithType
}
Implementera SetBSON-funktionen på denna typ. Den här funktionen ska avkoda typsträngen, skapa ett värde av rätt typ baserat på den strängen och avmarkera till det värdet.
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}