MongoDB 実験 - MongoDB シェル操作

MongoDB シェルの操作

実験原理

MongoDB シェルは実行可能ファイルであり、MongoDB に付属する対話型 JavaScript シェルであり、MongoDB インストール パスの /bin フォルダーにあります。MongoDB シェルを開始するには、mongo コマンドを実行します。これにより、コンソール プロンプトでシェルが起動されます。MongoDB シェルには複数のコマンドが用意されています。以下に、いくつかの MongoDB シェル コマンドとその使用法を示します。

画像-20221014215526918

1. MongoDB シェル スクリプト プログラミング

1. コマンド ライン プログラミング -eval を使用して JavaScript 式を実行します

パラメータ –eval は JavaScript 文字列または JavaScript ファイルを受け入れます。次のコマンドは、MongoDB シェルを開始し、データベース テストに接続し、データベース上で db.getCollectionNames() を実行し、結果を JSON 文字列として出力します。

ステップ:

1) テスト データベースに新しいコレクション学生を作成し、ドキュメントを追加します。コマンドは次のとおりです。

MongoDB シェル側の操作

>使用テスト

>db.student.insert({sno:”001”,sname:”zhangsan”})

>終了

2) コンソールに次のように入力します。

> mongo test --eval “printjson(db.getCollectionNames())”

画像-20221014225002936

2. MongoDB シェルのload() メソッドを使用してスクリプトを実行します。

1)shell_script.js ファイルを作成します。ファイルのパスは D:\Junior Experiment\nosql\NoSQL guide book\test1document\shell_script.js です。ファイル コードは次のとおりです。

print("Hostname:");

print("\t"+hostname());

print("Date:");

print("\t"+Date());

db = connect("localhost/admin");

print("Admin Collections:");

printjson(db.getCollectionNames());

2) mongoファイルアドレス+shell_script.jsコマンドを実行します。コマンドの実行結果は図のとおりです。

画像-20221015091614832

3. mongoコマンドで実行するJavaScriptファイルを指定

MongoDB シェルは、スクリプト ファイルgenerate_words.jsをロードして実行します。ファイルへのパスが次であると仮定します。

D:\JuniorExperiment\nosql\NoSQLguidebook\test1document\generate_words.js。

1) MongoDB シェルで「load("D:\JuniorExperiment\nosql\NoSQLguidebook\test1document\generate_words.js")」と入力します (アドレスが長すぎるため、ファイルパスを変更しました)

画像-20221015093917124

2) コマンド show dbs を入力すると、カスタム データベース ワードが生成されていることがわかります。

3) コマンド usewords を入力して、単語データベースに切り替えます。

4) コマンド show collections を入力して、単語データベースに含まれるコレクション名を表示します。コマンドの実行結果を図に示します。

画像-20221015094104309

5) コマンド db.word_stats.find().pretty() を入力して、word_stats コレクション内のすべてのドキュメントを表示します。コマンドの実行結果を図に示します。

画像-20221015094351269

2. MongoDB シェルの操作

実験内容

MongoDB でのコレクションの作成、コレクションの削除、データの挿入、データの更新、データの削除、データのクエリなどを練習します。

実験手順

1. MongoDB シェルを起動します。

画像-20221014220036475

2. 管理データベースに切り替え、root アカウントを使用します。

画像-20221014220420094

管理者アカウントを認証するときに、接続に失敗しましたError: Authentication failed.robomongo が接続できなくなる

解決策は、管理者アカウントを手動で追加することです。作成が成功すると、db.auth('root','strongs') は再び 1 を返します。

画像-20221015101018782

3. 現在のデータベースのステータスを確認する

画像-20221015101129224

4. 現在の MongoDB バージョンを表示します。

画像-20221015101221215

5. すべてのローカル データベースの名前をクエリします。

画像-20221015101438210

6. mydb データベースに切り替えます。データベースが存在しない場合は、最初のデータを挿入した後にデータベースが作成されます。

画像-20221015102105065

7. コレクションを作成します (コレクションはリレーショナル データベースのテーブルに相当します)。

画像-20221015102213620

8. 現在のライブラリ内のすべてのコレクションをクエリします。

画像-20221015102255718

9. 現在のライブラリ (コレクション) 内のすべてのコレクションをクエリします。

画像-20221015102336376

10. データをコレクション mycollection に挿入します。(コレクションが存在しない場合、データの挿入時に MongDB が自動的にコレクションを作成します)

画像-20221015103133623

11. insert メソッドを使用してデータを追加します。ドキュメントを追加する場合は、最初にオブジェクトを宣言してから追加することもできます。次に例を示します。

画像-20221015104901354

画像-20221015104941859

12.MongoDB は、挿入されたオブジェクトごとに「_id」値を自動的に生成します。たとえば、挿入時にこの値を自分で指定することもできます。

画像-20221015105338678

13. コレクション mycollection 内のデータをクエリします。

画像-20221015105437434

MongoDB は、update() と save() という 2 つの更新操作を提供します。

①update() 更新操作には少なくとも 2 つのパラメータが必要で、その構文は次のとおりです: db.collection.update(criteria, objNew, upsert, multi)

criteria: 更新クエリ条件。SQL 更新クエリの where 以降の値と同様です。

objNew: オブジェクトと一部の更新演算子 ( 、, inc...)などもSQL更新クエリに設定した後の値として把握できます。

upsert: 更新レコードがない場合、objNew を挿入するかどうか、true は挿入を意味し、デフォルトは false で挿入しません。

multi: MongoDB のデフォルトは false で、見つかった最初のレコードのみを更新します。このパラメータが true の場合、条件に基づいて見つかった複数のレコードがすべて更新されます。

14. ユーザー名に基づいて給与を変更し、ユーザー名「zhangyu」のデータの給与を 600 に増やします。

画像-20221015114835280

15. ユーザー名「wangkaiyue」のデータの年齢フィールドの値を 1 増やします。

画像-20221015124059839

②save() の構文は db.collection.save(x) です。x は更新対象のオブジェクトで、単一レコードのみを指定できます。Save を使用して挿入操作を実行することもできます。システム内に同一の "_id" が存在しない場合は挿入操作が実行され、存在する場合は元の値が上書きされて更新操作が実行されます。

16. _id 10000001 でデータを更新します。

画像-20221015125728327

17. mycollection コレクションを再度クエリして、上記の更新操作を確認します。

画像-20221015125819692

18. ユーザー名「yuhaowen」のデータを削除します。

画像-20221015130006073

19. コレクション mycollection 内のすべてのデータを削除します

画像-20221015130048687

削除の構文は次のとおりです。

db.mycollection.remove(
			<query>,
			{
				justOne:<boolean>,
				writeConcern:<document>
			}
		)

パラメータの説明:

クエリ: (オプション) 削除されたドキュメントの条件。

justOne : (オプション) true または 1 に設定すると、1 つのドキュメントのみが削除されます。デフォルトは false

writeConcern: (オプション) 例外がスローされるレベル。

20. コレクションの名前を mycollection から mcollection に変更します。

画像-20221015130404807

21. コレクション mcollection を削除します

画像-20221015130436672

22. 現在のデータベースを削除します

画像-20221015130511350

この実験的なシェル操作は終了します。

3.MongDBクエリ

実験内容

1. find または findOne 関数を使用してドキュメントをクエリする

2.MongoDBの条件付きクエリ

3.MongoDB AND および OR クエリ

4.MongoDB $type 演算子

5.MongoDBの正規表現

実験手順

1.MongoDBシェルを起動します。

画像-20221015131312431

2. 管理データベースに切り替え、root アカウントを使用します。

画像-20221015131412422

3. 実験データを挿入する

画像-20221015132243437

4. コレクション内のデータ項目の数を数える

画像-20221015132318293

5. MongoDB では Find を使用してクエリを実行します。クエリはセットのサブセットを返します。サブセットの範囲は 0 からセット全体です。

組み合わせる。find の最初のパラメータはどのサブセットを返すかを決定し、その形式もセットです。

空のドキュメント クエリは、コレクションのコンテンツ全体と一致します。クエリ ドキュメントが指定されていない場合、デフォルトは {} です。

6. 最初のデータをクエリする

画像-20221015132655681

findOne の O は大文字にする必要があることに注意してください

7. 第 1 条以降のすべてのデータをクエリする

画像-20221015132825319

8. 2 番目の項目をスキップして、最後の 2 つのデータをクエリします

画像-20221015132938356

このコマンドはページングに使用できます。制限は pageSize、スキップは page *pageSize

9. クエリを 3 つのデータに制限する

画像-20221015133127181

10. 結果セット内のレコード数をクエリします。(300 未満または 400 を超える給与の数を照会します)

画像-20221015133414286

指定された列のデータをクエリします。find (または findOne) の 2 番目のパラメータを通じて目的のキーを指定できます。

これにより、送信されるデータ量が節約され、クライアントがドキュメントをデコードする際の時間とメモリ消費が節約されます。

11. mycollection コレクションの「age」列と「salary」列をクエリします。

1はこの列を表示する意味を示し、trueでも表現できます。

画像-20221015155018086

12. 給与の昇順に並べ替えます。(降順に並べ替えるには、1 を -1 に置き換えます)

画像-20221015155228573

13. ユーザー名列をクエリし、重複データを削除します。

画像-20221015155326194

MongoDB と RDBMS の Where ステートメントの比較:

画像-20221015155403664

14. 13 歳未満のデータをクエリする

画像-20221015155531962

15. 年齢が 13 に等しいデータをクエリします。

画像-20221015155632315

16. 15 歳以上のデータをクエリする

画像-20221015155943311

17. クエリ データが 13 に等しくない

画像-20221015160111029

MongoDB の AND 条件

MongoDB の find() メソッドは、各キーをカンマで区切って複数のキーを渡すことができます。構文形式は次のとおりです。

db.col.find({key1:value1,key2:value2})

18. 年齢が 20、給与が 200 であるデータをクエリします。

画像-20221015160414164

19. 年齢が 13 歳未満で給与が 200 以上のデータをクエリします。

画像-20221015160734557

MongoDB の OR 条件

MongoDB の OR 条件文ではキーワード $or が使用され、構文形式は次のとおりです。

db.col.find(
	{
    	$or:[
            {key1:value1},{key2:value2}
        ]
    }
)

20. 給与が 300 を超える、または年齢が 13 以下のデータをクエリします。

画像-20221015161023486

AND と OR を併用する

21. 給与が 300 以上の場合、ユーザー名が「banma」または年齢が 8 であるデータをクエリします。従来の SQL ステートメントと同様です。

である:給与>=300かつ(ユーザー名 = 'banma'または年齢 = 8)

画像-20221015161224548

MongoDB $type 演算子

$type 演算子は、BSON 型に基づいてコレクション内の一致するデータ型を取得し、結果を返します。

MongoDB で使用できる型を次の表に示します。

画像-20221015161306407

22. mycollection コレクション内のユーザー名のデータを String 型で取得します。

画像-20221015161423623

MongoDB の正規表現

正規表現は、単一の文字列を使用して、特定の構文ルールに準拠する一連の文字列を記述し、一致させます。

23. ユーザー名に「m」を含むデータをクエリします。

画像-20221015161538597

24. z で始まるデータのクエリ

画像-20221015161638283

おすすめ

転載: blog.csdn.net/weixin_57367513/article/details/132582056