Je travaille avec le nouveau pilote mongodb officiel pour golang. J'ai créé une requête complexe pour insérer les données dans mongo db, puis les trier en fonction d'une valeur d'élément. J'utilise un filtre dans lequel j'ai créé le type bson en utilisant: -
filter := bson.D{{"autorefid", "100"}}
Mais il affiche un avertissement disant:
primitive.E Le littéral composite utilise des champs sans clé
Les avertissements créent un gâchis dans mon code.
Les avertissements peuvent être arrêtés en définissant l'indicateur de vérification sur false.
$ go doc cmd/vet
Par défaut, toutes les vérifications sont effectuées. Si des indicateurs sont explicitement définis sur true, seuls ces tests sont exécutés. Inversement, si un indicateur est explicitement défini sur false, seuls ces tests sont désactivés. Ainsi -printf = true exécute la vérification printf, -printf = false exécute toutes les vérifications à l'exception de la vérification printf.
Unkeyed composite literals Flag: -composites Composite struct literals that do not use the field-keyed syntax.
Mais l'avertissement est dû au fait de ne pas fournir le nom des clés lors de la définition de la valeur dans primitive.E
struct.
Définition des clés pour primitive.E
struct supprimera les messages d'avertissement. Par exemple
filter := bson.D{primitive.E{Key: "autorefid", Value: "100"}}
La primitive de package contient des types similaires aux primitives Go car les types BSON ne peuvent pas avoir de représentations de primitives Go directes.
type E struct {
Key string
Value interface{}
}
E représente un élément BSON pour un D. Il est généralement utilisé à l'intérieur d'un D.
Pour plus d'informations jetez un oeil à primitive.E
Vous pouvez changer:
filter := bson.D{{"autorefid", "100"}}
à:
filter := bson.D{primitive.E{Key: "autorefid", Value: "100"}}