Aus dem von Ihnen angegebenen Grund können Sie keine Schnittstelle in einem Dokument verwenden. Der Decoder hat keine Informationen über den zu erstellenden Typ.
Eine Möglichkeit, damit umzugehen, besteht darin, eine Struktur zu definieren, die die Typinformationen enthält:
type NodeWithType struct {
Node Node `bson:"-"`
Type string
}
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []NodeWithType
}
Implementieren Sie die SetBSON-Funktion für diesen Typ. Diese Funktion sollte den Typ String decodieren, basierend auf diesem String einen Wert des korrekten Typs erstellen und diesen Wert entpacken.
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}