序章

MongoDBは、最新のWebアプリケーションで一般的に使用されている無料のオープンソースNoSQLドキュメントデータベースです。 この短いチュートリアルでは、MongoDBでデータを操作する方法を探ります。 レコードを作成、取得、更新、および削除します。

前提条件

このチュートリアルを完了するには、MongoDBをインストールする必要があります。これは、 Ubuntu18.04にMongoDBをインストールする方法に従って実行できます。

データベースの作成

MongoDBを実行しているサーバーで、mongoと入力して、データベースへの接続を開きます。

  1. mongo

>記号が表示されたら、最初のデータベースを作成してレコードの追加を開始する準備ができています。

ユーザーに関するデータを保存するための個人用データベースを作成しましょう。

最初のコマンドuse userdbは、「userdb」という名前の新しいデータベースを作成します。このデータベースには、use <databasename>の形式で任意の名前を付けることができます。

  1. use userdb

dbコマンドを使用して、現在使用しているデータベースを確認できます。この場合、「userdb」が返されます。

  1. db
Output
userdb

データベースが作成されたので、データベースにデータを保存するためのJSON構造のドキュメントを作成できます。

次のコマンドを実行して、データベースにデータを挿入します。

  1. db.people.insert({ name: "Andrew", age: 33, hobbies: ["Coding", "Gaming", "Cooking"], hungry: false})

挿入が成功したことを通知するWriteResult通知が表示されます。

Output
WriteResult({ "nInserted" : 1 })

文字列、数値、配列、ブール値など、多くのデータ型を使用できます。 Keyには二重引用符は必要ありません。

データの取得

コレクションにデータが含まれると、.find(<parameters>)を使用してそのデータの検索とフィルタリングを開始できます。

データが「人」ドキュメントに追加されたことを確認するには、find()構文を使用します。 MongoDBコンソールで次のコマンドを実行します。

  1. db.people.find()

このコマンドは、現在「人」ドキュメントに関連付けられているすべてのデータを表示します。

Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }

これをきれいなJSON形式に変換したい場合は、.find()の後に.pretty()を使用してください。

  1. db.people.find().pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }

新しいレコードを追加すると、そのMongoは後で参照できるように_idキーを自動的に作成します。

さらにデータを追加してみてください。その後、データの変更と検索に取り組みます。

  1. db.people.insert({ name: "Riley", age: 3, hobbies: ["Sleeping", "Barking", "Snuggles"], hungry: true})
  2. db.people.insert({ name: "You", age: 30, hobbies: ["Coding", "Reading DigitalOcean Articles", "Creating Droplets"], hungry: true})

たとえば、お腹が空いた人の記録だけを見つけたい場合は、次のようにします。

  1. db.people.find({ hungry: true }).pretty()
Output
{ "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }

または特定の趣味によって:

  1. db.people.find({ hobbies: "Coding" }).pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }

データの更新

データを変更するには、.update()機能を使用します。 しかし、最初にデータを見て、何を変更したいかを確認しましょう。

  1. db.people.find().pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }

次のように3番目のレコードの名前を変更します。

  1. db.people.update({ name: "You" }, {$set: { name: "Sammy" }})

ステートメントの最初の部分は、更新するために検索しているものを指定し、2番目の部分は設定する新しい値です。 このコマンドを使用すると、1つのレコードが一致し、1つのレコードが変更されていることがわかります。

Output
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

ここで、新しく設定した名前でそのレコードを確認すると、次のようになります。

  1. db.people.find({ name: "Sammy" }).pretty()
Output
{ "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "Sammy", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }

nameキー値は、新しい値Sammyに設定されています。

$setの代わりに$pushを使用して、新しい趣味をアレイにプッシュすることもできます。

  1. db.people.update({ name: "Sammy" }, {$push: { hobbies: "Typing furiously" }})
  2. db.people.find({ name: "Sammy" }).pretty()
Output
{ "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "Sammy", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets", "Typing furiously" ], "hungry" : true }

次に、データの削除を見てみましょう。

データの削除(D)

.remove()機能を使用してデータを削除します。 いくつかの方法でデータを削除できますが、最も安全な方法は、一意の_idを使用して削除するレコードを見つけることです。たとえば、複数の"Sammy"エントリがあり、 name: "Sammy"はそれらをすべて削除します。 これを試してみましょう:

  1. db.people.remove({ _id: ObjectId("5c08cc2e3d828385a2162d96")})
Output
WriteResult({ "nRemoved" : 1 })
  1. db.people.find().pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true }

"Sammy"エントリは安全に削除され、他の可能な"Sammy"レコードが存在する場合に影響を与えることはありません。 これを試して、他に何ができるかを確認してください。

結論

この記事を読むと、MongoDBデータベースでレコードを作成、取得、更新、および削除する方法の基本を理解できました。