Nie możesz używać interfejsu w dokumencie z podanego powodu. Dekoder nie ma informacji o typie do utworzenia.
Jednym ze sposobów poradzenia sobie z tym jest zdefiniowanie struktury do przechowywania informacji o typie:
type NodeWithType struct {
Node Node `bson:"-"`
Type string
}
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []NodeWithType
}
Zaimplementuj funkcję SetBSON na tym typie. Ta funkcja powinna zdekodować łańcuch typu, utworzyć wartość właściwego typu na podstawie tego łańcucha i przenieść do tej wartości.
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}