MongoDBでレコードを作成、取得、更新、および削除する方法

提供:Dev Guides
移動先:案内検索

序章

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データベースでレコードを作成、取得、更新、および削除する方法の基本を理解できました。