MongoDBでレコードを作成、取得、更新、および削除する方法
序章
MongoDBは、最新のWebアプリケーションで一般的に使用されている無料のオープンソースNoSQLドキュメントデータベースです。 この短いチュートリアルでは、MongoDBでデータを操作する方法を探ります。 レコードを作成、取得、更新、および削除します。
前提条件
このチュートリアルを完了するには、MongoDBをインストールする必要があります。これは、 Ubuntu18.04にMongoDBをインストールする方法に従って実行できます。
データベースの作成
MongoDBを実行しているサーバーで、mongo
と入力して、データベースへの接続を開きます。
mongo
>
記号が表示されたら、最初のデータベースを作成してレコードの追加を開始する準備ができています。
ユーザーに関するデータを保存するための個人用データベースを作成しましょう。
最初のコマンドuse userdb
は、「userdb」という名前の新しいデータベースを作成します。このデータベースには、use <databasename>
の形式で任意の名前を付けることができます。
use userdb
db
コマンドを使用して、現在使用しているデータベースを確認できます。この場合、「userdb」が返されます。
db
Outputuserdb
データベースが作成されたので、データベースにデータを格納するためのJSON構造のドキュメントを作成できます。
次のコマンドを実行して、データベースにデータを挿入します。
db.people.insert({ name: "Andrew", age: 33, hobbies: ["Coding", "Gaming", "Cooking"], hungry: false})
挿入が成功したことを通知するWriteResult
通知が表示されます。
OutputWriteResult({ "nInserted" : 1 })
文字列、数値、配列、ブール値など、多くのデータ型を使用できます。 Key
には二重引用符は必要ありません。
データの取得
コレクションにデータが含まれると、.find(<parameters>)
を使用してそのデータの検索とフィルタリングを開始できます。
データが「人」ドキュメントに追加されたことを確認するには、find()
構文を使用します。 MongoDBコンソールで次のコマンドを実行します。
db.people.find()
このコマンドは、現在「人」ドキュメントに関連付けられているすべてのデータを表示します。
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }
これをきれいなJSON形式に変換したい場合は、.find()
の後に.pretty()
を使用してください。
db.people.find().pretty()
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }
新しいレコードを追加すると、そのMongoは後で参照できるように_id
キーを自動的に作成します。
さらにデータを追加してみてください。その後、データの変更と検索に取り組みます。
db.people.insert({ name: "Riley", age: 3, hobbies: ["Sleeping", "Barking", "Snuggles"], hungry: true}) db.people.insert({ name: "You", age: 30, hobbies: ["Coding", "Reading DigitalOcean Articles", "Creating Droplets"], hungry: true})
たとえば、お腹が空いた人の記録だけを見つけたい場合は、次のようにします。
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 }
または特定の趣味によって:
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()
機能を使用してください。 しかし、最初にデータを見て、何を変更したいかを確認しましょう。
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番目のレコードの名前を変更します。
db.people.update({ name: "You" }, {$set: { name: "Sammy" }})
ステートメントの最初の部分は、更新するために検索しているものを指定し、2番目の部分は設定する新しい値です。 このコマンドを使用すると、1つのレコードが一致し、1つのレコードが変更されていることがわかります。
OutputWriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 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
を使用して、新しい趣味をアレイにプッシュすることもできます。
db.people.update({ name: "Sammy" }, {$push: { hobbies: "Typing furiously" }}) 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"
はそれらをすべて削除します。 これを試してみましょう:
db.people.remove({ _id: ObjectId("5c08cc2e3d828385a2162d96")})
OutputWriteResult({ "nRemoved" : 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データベースでレコードを作成、取得、更新、および削除する方法の基本を理解できました。