U kunt geen interface in een document gebruiken om de door u genoemde reden. De decoder heeft geen informatie over het aan te maken type.
Een manier om dit aan te pakken is door een struct te definiëren die de type-informatie bevat:
type NodeWithType struct {
Node Node `bson:"-"`
Type string
}
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []NodeWithType
}
Implementeer de SetBSON-functie op dit type. Deze functie zou de typestring moeten decoderen, een waarde van het juiste type moeten creëren op basis van die string en naar die waarde moeten unmarsen.
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}