Docs Menu

Docs HomeGo

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 ではアップサートのオプションによって簡単に対応できます。

アップサートでは、次のいずれかのアクションが実行されます。

  • クエリフィルターに一致するドキュメントを更新します

  • クエリフィルターに一致するものがない場合、ドキュメントを挿入します

次の書込み操作メソッドのオプションでtrueSetUpsert()メソッドに渡すことで、アップサートを指定できます。

  • UpdateOne()

  • UpdateByID()

  • UpdateMany()

  • ReplaceOne()

  • FindOneAndUpdate()

  • FindOneAndReplace()

Tip

アップサートを指定しない場合、クエリフィルターに一致するドキュメントがない場合でも、書込み操作は変更されません。これはSetUpsert()メソッドにfalseを渡すことと同じです。

次の例では、次のアクションが実行されます。

  • typeが「Oolong」であるドキュメントに一致します

  • 一致したドキュメントのrating8に更新します

  • クエリフィルターに一致するものがない場合、このドキュメントを挿入します

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ドキュメントを参照してください。

←  ドキュメント内の配列の更新一括操作 →
フィードバックを送る
© 2022 MongoDB, Inc.

会社概要

© 2022 MongoDB, Inc.