Golang用の新しい公式mongodbドライバーを使用しています。 mongo dbにデータを挿入し、要素の値に従って並べ替える複雑なクエリを1つ作成しました。私は使用してbsonタイプを作成したフィルターを使用しています:-
filter := bson.D{{"autorefid", "100"}}
しかし、それは言っている警告を示しています:
プリミティブ.E複合リテラルはキーなしフィールドを使用します
警告は私のコードに混乱を引き起こしています。
警告は、チェックフラグをfalseに設定することで停止できます。
$ go doc cmd/vet
デフォルトでは、すべてのチェックが実行されます。フラグが明示的にtrueに設定されている場合、それらのテストのみが実行されます。逆に、いずれかのフラグが明示的にfalseに設定されている場合、それらのテストのみが無効になります。したがって、-printf = trueはprintfチェックを実行し、-printf = falseはprintfチェックを除くすべてのチェックを実行します。
Unkeyed composite literals Flag: -composites Composite struct literals that do not use the field-keyed syntax.
しかし、警告はprimitive.E
構造体に値を設定するときにキー名を提供しないためです。
primitive.E
構造体にキーを設定すると、警告メッセージが削除されます。例えば
filter := bson.D{primitive.E{Key: "autorefid", Value: "100"}}
パッケージプリミティブには、BSONタイプのGoプリミティブに類似したタイプが含まれていますが、直接Goプリミティブ表現を持つことはできません。
type E struct {
Key string
Value interface{}
}
EはDのBSON要素を表します。通常、Dの内部で使用されます。
詳細については、 primitive.E を参照してください。
あなたは変えられる:
filter := bson.D{{"autorefid", "100"}}
に:
filter := bson.D{primitive.E{Key: "autorefid", Value: "100"}}