MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBのsave()メソッドの正しい使い方を徹底解説

MongoDBのsave()メソッドとは

db.collection.save()は、ドキュメントのパラメータに応じて、既存ドキュメントの更新または新規ドキュメントの挿入を行うためのメソッドです。ドキュメントに_idフィールドが含まれており、そのIDがコレクション内に存在する場合は更新(update)として動作し、存在しない場合や_idがない場合は新規挿入(insert)として動作します。

注意: save()メソッドはMongoDB 4.2以降で非推奨(deprecated)となっています。新しいプロジェクトでは、代わりにinsertOne()replaceOne()などの使用が推奨されます。

ドキュメントを挿入するサンプルコード

まず、ドキュメントを含むコレクションを作成してみましょう。

> db.demo481.save({"FirstName":"Chris","LastName":"Brown"});
WriteResult({ "nInserted" : 1 })
> db.demo481.save({"FirstName":"David","LastName":"Miller"});
WriteResult({ "nInserted" : 1 })
> db.demo481.save({"FirstName":"John","LastName":"Doe"});
WriteResult({ "nInserted" : 1 })
> db.demo481.save({"FirstName":"John","LastName":"Smith"});
WriteResult({ "nInserted" : 1 })

各操作の結果としてWriteResult({ "nInserted" : 1 })が返され、1件ずつドキュメントが正常に挿入されたことが確認できます。

find()メソッドで全ドキュメントを表示する

次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。

> db.demo481.find();

このクエリを実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5e82db39b0f3fa88e227909c"), "FirstName" : "Chris", "LastName" : "Brown" }
{ "_id" : ObjectId("5e82db45b0f3fa88e227909d"), "FirstName" : "David", "LastName" : "Miller" }
{ "_id" : ObjectId("5e82db4db0f3fa88e227909e"), "FirstName" : "John", "LastName" : "Doe" }
{ "_id" : ObjectId("5e82db52b0f3fa88e227909f"), "FirstName" : "John", "LastName" : "Smith" }

save()とupdate()の違い

save()_idの有無によって挿入と更新を自動的に切り替える便利なメソッドですが、意図しない上書きを防ぐためにも、更新処理にはupdateOne()replaceOne()、新規追加にはinsertOne()を明示的に使うことがベストプラクティスとされています。

  1. MongoDBで「NOT LIKE」を実現する方法|$not演算子と正規表現の使い方

    MongoDBには、SQLにあるような「NOT LIKE」演算子は用意されていません。しかし、$not演算子と正規表現を組み合わせることで、同じ条件指定を簡単に実現できます。この記事では、実際にコレクションを作成しながら、$not演算子の使い方を具体的に解説します。1. サンプルコレクションの作成まずは動作確認のためのコレクションを作成します。以下のクエリで、学生名(StudentName)を含むドキュメントを5件挿入します。> db.notLikeOperatorDemo.insertOne({StudentName:John Doe}); { acknowledged : tr

  2. MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方

    MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、