1. ホーム
  2. mongodb

[解決済み] 複合リテラルのキー無しフィールドの使用

2022-02-08 15:45:51

質問

私はgolang用の新しい公式mongodbドライバを使っています。私は、データをmongo dbに挿入し、要素の値に従ってそれをソートするために、1つの複雑なクエリを作成しました。私は、:-を使用してbson型を作成したフィルタを使用しています。

filter := bson.D{{"autorefid", "100"}}

という警告が表示されます。

primitive.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の内部で使用されます。

詳しくは、以下のサイトをご覧ください。 プリミティブ