MongoDB シェルの操作
実験原理
MongoDB シェルは実行可能ファイルであり、MongoDB に付属する対話型 JavaScript シェルであり、MongoDB インストール パスの /bin フォルダーにあります。MongoDB シェルを開始するには、mongo コマンドを実行します。これにより、コンソール プロンプトでシェルが起動されます。MongoDB シェルには複数のコマンドが用意されています。以下に、いくつかの MongoDB シェル コマンドとその使用法を示します。
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())”
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コマンドを実行します。コマンドの実行結果は図のとおりです。
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")」と入力します (アドレスが長すぎるため、ファイルパスを変更しました)
2) コマンド show dbs を入力すると、カスタム データベース ワードが生成されていることがわかります。
3) コマンド usewords を入力して、単語データベースに切り替えます。
4) コマンド show collections を入力して、単語データベースに含まれるコレクション名を表示します。コマンドの実行結果を図に示します。
5) コマンド db.word_stats.find().pretty() を入力して、word_stats コレクション内のすべてのドキュメントを表示します。コマンドの実行結果を図に示します。
2. MongoDB シェルの操作
実験内容
MongoDB でのコレクションの作成、コレクションの削除、データの挿入、データの更新、データの削除、データのクエリなどを練習します。
実験手順
1. MongoDB シェルを起動します。
2. 管理データベースに切り替え、root アカウントを使用します。
管理者アカウントを認証するときに、接続に失敗しましたError: Authentication failed.
。robomongo が接続できなくなる
解決策は、管理者アカウントを手動で追加することです。作成が成功すると、db.auth('root','strongs') は再び 1 を返します。
3. 現在のデータベースのステータスを確認する
4. 現在の MongoDB バージョンを表示します。
5. すべてのローカル データベースの名前をクエリします。
6. mydb データベースに切り替えます。データベースが存在しない場合は、最初のデータを挿入した後にデータベースが作成されます。
7. コレクションを作成します (コレクションはリレーショナル データベースのテーブルに相当します)。
8. 現在のライブラリ内のすべてのコレクションをクエリします。
9. 現在のライブラリ (コレクション) 内のすべてのコレクションをクエリします。
10. データをコレクション mycollection に挿入します。(コレクションが存在しない場合、データの挿入時に MongDB が自動的にコレクションを作成します)
11. insert メソッドを使用してデータを追加します。ドキュメントを追加する場合は、最初にオブジェクトを宣言してから追加することもできます。次に例を示します。
12.MongoDB は、挿入されたオブジェクトごとに「_id」値を自動的に生成します。たとえば、挿入時にこの値を自分で指定することもできます。
13. コレクション mycollection 内のデータをクエリします。
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 に増やします。
15. ユーザー名「wangkaiyue」のデータの年齢フィールドの値を 1 増やします。
②save() の構文は db.collection.save(x) です。x は更新対象のオブジェクトで、単一レコードのみを指定できます。Save を使用して挿入操作を実行することもできます。システム内に同一の "_id" が存在しない場合は挿入操作が実行され、存在する場合は元の値が上書きされて更新操作が実行されます。
16. _id 10000001 でデータを更新します。
17. mycollection コレクションを再度クエリして、上記の更新操作を確認します。
18. ユーザー名「yuhaowen」のデータを削除します。
19. コレクション mycollection 内のすべてのデータを削除します
削除の構文は次のとおりです。
db.mycollection.remove(
<query>,
{
justOne:<boolean>,
writeConcern:<document>
}
)
パラメータの説明:
クエリ: (オプション) 削除されたドキュメントの条件。
justOne : (オプション) true または 1 に設定すると、1 つのドキュメントのみが削除されます。デフォルトは false
writeConcern: (オプション) 例外がスローされるレベル。
20. コレクションの名前を mycollection から mcollection に変更します。
21. コレクション mcollection を削除します
22. 現在のデータベースを削除します
この実験的なシェル操作は終了します。
3.MongDBクエリ
実験内容
1. find または findOne 関数を使用してドキュメントをクエリする
2.MongoDBの条件付きクエリ
3.MongoDB AND および OR クエリ
4.MongoDB $type 演算子
5.MongoDBの正規表現
実験手順
1.MongoDBシェルを起動します。
2. 管理データベースに切り替え、root アカウントを使用します。
3. 実験データを挿入する
4. コレクション内のデータ項目の数を数える
5. MongoDB では Find を使用してクエリを実行します。クエリはセットのサブセットを返します。サブセットの範囲は 0 からセット全体です。
組み合わせる。find の最初のパラメータはどのサブセットを返すかを決定し、その形式もセットです。
空のドキュメント クエリは、コレクションのコンテンツ全体と一致します。クエリ ドキュメントが指定されていない場合、デフォルトは {} です。
6. 最初のデータをクエリする
findOne の O は大文字にする必要があることに注意してください
7. 第 1 条以降のすべてのデータをクエリする
8. 2 番目の項目をスキップして、最後の 2 つのデータをクエリします
このコマンドはページングに使用できます。制限は pageSize、スキップは page *pageSize
9. クエリを 3 つのデータに制限する
10. 結果セット内のレコード数をクエリします。(300 未満または 400 を超える給与の数を照会します)
指定された列のデータをクエリします。find (または findOne) の 2 番目のパラメータを通じて目的のキーを指定できます。
これにより、送信されるデータ量が節約され、クライアントがドキュメントをデコードする際の時間とメモリ消費が節約されます。
11. mycollection コレクションの「age」列と「salary」列をクエリします。
1はこの列を表示する意味を示し、trueでも表現できます。
12. 給与の昇順に並べ替えます。(降順に並べ替えるには、1 を -1 に置き換えます)
13. ユーザー名列をクエリし、重複データを削除します。
MongoDB と RDBMS の Where ステートメントの比較:
14. 13 歳未満のデータをクエリする
15. 年齢が 13 に等しいデータをクエリします。
16. 15 歳以上のデータをクエリする
17. クエリ データが 13 に等しくない
MongoDB の AND 条件
MongoDB の find() メソッドは、各キーをカンマで区切って複数のキーを渡すことができます。構文形式は次のとおりです。
db.col.find({key1:value1,key2:value2})
18. 年齢が 20、給与が 200 であるデータをクエリします。
19. 年齢が 13 歳未満で給与が 200 以上のデータをクエリします。
MongoDB の OR 条件
MongoDB の OR 条件文ではキーワード $or が使用され、構文形式は次のとおりです。
db.col.find(
{
$or:[
{key1:value1},{key2:value2}
]
}
)
20. 給与が 300 を超える、または年齢が 13 以下のデータをクエリします。
AND と OR を併用する
21. 給与が 300 以上の場合、ユーザー名が「banma」または年齢が 8 であるデータをクエリします。従来の SQL ステートメントと同様です。
である:給与>=300かつ(ユーザー名 = 'banma'または年齢 = 8)
MongoDB $type 演算子
$type 演算子は、BSON 型に基づいてコレクション内の一致するデータ型を取得し、結果を返します。
MongoDB で使用できる型を次の表に示します。
22. mycollection コレクション内のユーザー名のデータを String 型で取得します。
MongoDB の正規表現
正規表現は、単一の文字列を使用して、特定の構文ルールに準拠する一連の文字列を記述し、一致させます。
23. ユーザー名に「m」を含むデータをクエリします。
24. z で始まるデータのクエリ