1 回の操作で挿入またはアップデート
Overview
このガイドでは、 アップサートを指定する方法を学習できます。
サンプル データ
このガイドの例を実行するには、次のスニペットを使用してサンプルデータを tea.ratings
コレクションにロードします。
coll := client.Database("tea").Collection("ratings") docs := []interface{}{ bson.D{{"type", "Masala"}, {"rating", 10}}, bson.D{{"type", "Assam"}, {"rating", 5}}, } result, err := coll.InsertMany(context.TODO(), docs) if err != nil { panic(err) } fmt.Printf("Number of documents inserted: %d\n", len(result.InsertedIDs))
Tip
存在しないデータベースとコレクション
書き込み操作を実行するときに必要なデータベースとコレクションが存在しない場合は、サーバーが暗黙的にそれらを作成します。
各ドキュメントには、 フィールドとtype
rating
フィールドに対応するお茶の種類の評価が含まれています。
アップサート
アプリケーションにより、挿入操作と更新操作を使用してデータの保存および変更が行われます。 ドキュメントが存在するかどうかに応じて、挿入操作と更新操作のどちらかを選択しなければならない場合があります。 MongoDB ではアップサートのオプションによって簡単に対応できます。
アップサートでは、次のいずれかのアクションが実行されます。
クエリフィルターに一致するドキュメントを更新します
クエリフィルターに一致するものがない場合、ドキュメントを挿入します
次の書込み操作メソッドのオプションでtrue
をSetUpsert()
メソッドに渡すことで、アップサートを指定できます。
UpdateOne()
UpdateByID()
UpdateMany()
ReplaceOne()
FindOneAndUpdate()
FindOneAndReplace()
Tip
アップサートを指定しない場合、クエリフィルターに一致するドキュメントがない場合でも、書込み操作は変更されません。これはSetUpsert()
メソッドにfalse
を渡すことと同じです。
例
次の例では、次のアクションが実行されます。
type
が「Oolong」であるドキュメントに一致します一致したドキュメントの
rating
を8
に更新しますクエリフィルターに一致するものがない場合、このドキュメントを挿入します
filter := bson.D{{"type", "Oolong"}} update := bson.D{{"$set", bson.D{{"rating", 8}}}} opts := options.Update().SetUpsert(true) result, err := coll.UpdateOne(context.TODO(), filter, update, opts) if err != nil { panic(err) } fmt.Printf("Number of documents updated: %v\n", result.ModifiedCount) fmt.Printf("Number of documents upserted: %v\n", result.UpsertedCount)
詳細情報
上記で説明されている操作の詳細については、次のガイドを参照してください。
API ドキュメント
このガイドで言及されているメソッドや型の詳細については、以下のAPIドキュメントを参照してください。