MongoDB#基本操作

この記事ではMongoDBの基本操作と考え方について説明します。

Reference Link

Mongodb#Pi4にMongodbをインストールする
MongoDB#Install in Ubuntu

NonSQL?

NonSQL(NoSQL)は、関係型データベース(SQLデータベース)以外のデータベース管理システムの総称です。NoSQLデータベースは、伝統的な関係型データベースとは異なるデータモデルとアーキテクチャを持っています。

Mongo DB?

MongoDBは、非関係型データベース管理システム(NoSQL DBMS)の一種です。MongoDBは、データをドキュメントと呼ばれるJSON形式で格納します。データモデルはスキーマレス(Schemaless)であり、フィールドの追加や変更が簡単になります。

Database

MongoDBのDatabase(データベース)は、MongoDBのデータ管理の最上位レベルであり、関連するコレクション(テーブルに相当)をグループ化します。

各データベースは、名前を持ち、複数のコレクションを含むことができます。データベースは、関係型データベースでいうところのデータベースに相当します。

また、異なるアプリケーションやユースケースのために、それぞれ独立したデータの保持と管理を可能にします。

データベースの作成以下のようにコマンドを実行し、”mydb”という名前のデータベースを作成します。

use mydb

このコマンドを実行すると、指定した名前のデータベースが作成されます。もしデータベースがすでに存在する場合は、既存のデータベースに切り替えます。

Collections

MongoDBのCollectionsは、MongoDBデータベース内のドキュメント(データレコード)のグループ化です。コレクションは、関連するドキュメントを論理的にまとめるために使用されます。

コレクションは、関係型データベースのテーブルに類似していますが、いくつかの重要な違いがあります。具体的には、MongoDBのコレクションは特定のフィールドや構造を事前に定義する必要はありません。各ドキュメントは異なるフィールドや構造を持つことができます。

例えば、ブログアプリケーションのデータモデルを考えてみましょう。ブログのデータベースには、複数のコレクションが存在する可能性があります。例えば、

  • “users”コレクションにはユーザー情報が格納されます
  • “posts”コレクションにはブログ投稿が格納されることが考えられます。

各コレクション内のドキュメントは、JSON形式(またはBSON形式)で表されます。それぞれのドキュメントは、コレクション内の1つのデータレコードに相当します。ドキュメントはフィールドと値のペアを持ち、それぞれのフィールドはドキュメント内で一意に識別されます。

MongoDBでは、コレクションは動的に作成されます。すでに存在しないコレクションにデータを挿入すると、MongoDBは自動的にそのコレクションを作成します。

Documents

MongoDBのDocumentsは、MongoDBデータベース内で扱われるデータの単位です。ドキュメントはJSON形式で表現され、MongoDB内に格納されます。

ドキュメントは、関係型データベースでいうところのRecordに相当します。それぞれのドキュメントは、コレクション内の1つのData Recordとして扱われます。MongoDBの特徴の一つは、ドキュメントがスキーマレスであることです。つまり、個々のドキュメントは異なるフィールドや構造を持つことができます。

ドキュメントは、フィールドとその値のペアで構成されます。

  • フィールドは名前(キー)と値の組み合わせであます
  • 任意の数のフィールドを持つことができます
  • フィールドの値は、さまざまなデータ型を持つことができます
    • 文字列
    • 数値
    • 配列
    • 埋め込まれたドキュメント
    • など…

例えば、以下はユーザーのドキュメントの例です:

このドキュメントには、”name”、”age”、”email”などのフィールドがあります。”address”フィールドには埋め込まれたドキュメントがあり、”interests”フィールドには配列が含まれています。

{
  “name”: “John Doe”,
  “age”: 30,
  “email”: “john@example.com”,
  “address”: {
    “street”: “123 Main St”,
    “city”: “New York”,
    “country”: “USA”
  },
  “interests”: [“reading”, “music”, “sports”]
}

MongoDBでは、ドキュメントはフレキシブルであり、必要に応じてフィールドを追加・変更できます。データモデルの変更が柔軟に行えるため、アプリケーションの開発やデータの進化に対応しやすいという利点があります。

Operation

これからMongoDBの簡単な操作について説明します。

mongodb Shell

mongoコマンドでmongodbシェルを起動します。

ubuntu@ubuntu:~$ mongo

>

use db

use コマンドを使用しDatabaseを作成します。

> use testdb
switched to db testdb

show dbs

show dbsコマンドを使用しDatabaseの中にEmptyであればそのDBが表示しません。

> show dbs
admin      0.000GB
config     0.000GB
dbStation  0.000GB
local      0.000GB
myDB       0.000GB
tanks      0.000GB

Create Collections

db.createCollection()を使用しCollections(SQLのTableに相当)を作成します。

以下のExampleでMyCollections1というCollectionを作りました。

> db.createCollection(“MyCollections1”)
{ “ok” : 1 }

Insert Documents

次はinsertOne()を使って先程定義したCollectionにDocuments(SQLのRecordに相当)を挿入します。

>db.MyCollections1.insertOne({plc:”Beckhoff”,model:”CX6920″,TwinCATVersion:3})
{
        “acknowledged” : true,
        “insertedId” : ObjectId(“64a0ad21cf8d3947804e3616”)
}
>db.MyCollections1.insertOne({plc:”Mitusbishi”,model:”IQR”,GXWORKSVersion:3})
{
        “acknowledged” : true,
        “insertedId” : ObjectId(“64a0adc0cf8d3947804e3617”)
}
>db.MyCollections1.insertOne({plc:”Keyence”,model:”KV8000″,KVStudioVersion:”11.6.G”})
{
        “acknowledged” : true,
        “insertedId” : ObjectId(“64a0ade1cf8d3947804e3618”)
}

Find

今度はfind()でColllectionsのデータを検索します。

> db.MyCollections1.find()
{ “_id” : ObjectId(“64a0ad21cf8d3947804e3616”), “plc” : “Beckhoff”, “model” : “CX6920”, “TwinCATVersion” : 3 }
{ “_id” : ObjectId(“64a0adc0cf8d3947804e3617”), “plc” : “Mitusbishi”, “model” : “IQR”, “GXWORKSVersion” : 3 }
{ “_id” : ObjectId(“64a0ade1cf8d3947804e3618”), “plc” : “Keyence”, “model” : “KV8000”, “KVStudioVersion” : “11.6.G” }

Find with Conditions

find()にKeyと一緒に渡せば取り出したいRecordを取得できます。

下記のExampleではCollectionsにplc=BeckhoffのRecordを取り出しました。

db.MyCollections1.find({plc:”Beckhoff”})
{ “_id” : ObjectId(“64a0ad21cf8d3947804e3616”), “plc” : “Beckhoff”, “model” : “CX6920”, “TwinCATVersion” : 3 }

Update

CollectionsのRecordに新しいデータを挿入したい場合はUpdate()を使います。

下記のExapleではproject:MyprojectのPairを追加しました。

db.MyCollections1.updateOne({plc:”Beckhoff”},{$set:{projectname:”Myproject”}})

{ “acknowledged” : true, “matchedCount” : 1, “modifiedCount” : 1 }

Find Again

もう一回データを確認しましょう。

> db.MyCollections1.find({plc:”Beckhoff”})
{ “_id” : ObjectId(“64a0ad21cf8d3947804e3616”), “plc” : “Beckhoff”, “model” : “CX6920”, “TwinCATVersion” : 3, “projectname” : “Myproject” }

> db.MyCollections1.deleteOne({plc:”Keyence”})
{ “acknowledged” : true, “deletedCount” : 1 }

> db.MyCollections1.find()
{ “_id” : ObjectId(“64a0ad21cf8d3947804e3616”), “plc” : “Beckhoff”, “model” : “CX6920”, “TwinCATVersion” : 3, “projectname” : “Myproject” }
{ “_id” : ObjectId(“64a0adc0cf8d3947804e3617”), “plc” : “Mitusbishi”, “model” : “IQR”, “GXWORKSVersion” : 3 }

Exit

Ctrl+Cでmongodb ShellをExitします。

> ^C
bye
Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする