MongoDBコマンド
I. MongoDB入門
MongoDBについて簡単に紹介します。
従来のリレーショナルデータベース(mysqlなど)は、一般にデータベース、テーブル、レコードという3つの階層的な概念で構成されています。
MongoDBは、データベース、コレクション、ドキュメントの3つのレベルで構成されています。
MongoDBは安定している
MongoDBはインデックスをサポートしており、これはメモリ上に配置され、ランダムな読み取りと書き込みのパフォーマンスを向上させることができます。インデックスが完全にメモリ上にない場合、ランダムな読み書きが比較的多くなると、ディスクスワップが頻繁に発生し、MongoDBのパフォーマンスは劇的に低下することになる
MongoDBはスペース・フォー・タイム原則に代表されるタイプなので、多くのスペースを占有しています。そうすると、普通のデータベースよりも少しディスクスペースを浪費してしまいます
II. MongoDBのデータベース操作
mongoのヘルプドキュメントを見る
mongo -h
1
2. ログイン
mongo -umiaobt -p --authenticationDatabase
mongo -umiaobt -p331sharp --authenticationDatabase
1
2
(以下の操作を行うには、データベースへのログインが必要です。)
// ライブラリ操作
3. 全ライブラリを問い合わせる
dbsを表示します。
1
4. ライブラリ内の接続を問い合わせる
コレクションを表示する。
1
5. データベースの作成/データベースの切り替え
test1 を使用します。
1
ライブラリtest1が利用できない場合は
6. データベースの削除
db.dropDatabase()を実行します。
1
7. データベース名の取得
db.getName()を実行します。
1
8. データベースの状態を取得する
db.stats()を実行します。
1
9. 現在のDBバージョン
db.version()を使用します。
1
10. 現在のdbのリンク先マシンアドレスを表示する
db.getMongo()です。
1
11. 指定したホストからデータベースをクローンする
db.cloneDatabase("127.0.0.1") を実行します。
1
12. 指定されたマシンの指定されたデータベースデータをデータベースにコピーする
db.copyDatabase("yhb", "test1", "127.0.0.1") を使用します。
1
13. データベースを修正する
db.repairDatabase()を実行します。
1
MongoDBで頻繁にデータの追加、削除、変更が行われる場合、レコードが変わると、例えばデータのサイズが変わると、この時に何らかのデータの断片化が発生しやすく、断片化が引き金となり発生する結果
一つはインデックスの性能に問題があること、もう一つは一定の時間が経つと不可解に占有容量が増えることで、定期的にデータベースを修正し、定期的にインデックスを作り直すことが重要で、これによりMongoDBの安定性と効率性を向上させることができます
三、MongoDBの収集操作
1. 集約されたコレクション(テーブル)を作成する
//指定されたデータベースのサイズのサイズは、100文書の最大ストレージは、フル、それはmongodbは古いドキュメントを削除されます。
db.createCollection("human",{"size":1024,capped:true,max:100}) を使用します。
db.createCollection("people") を使用します。
1
2
3
2. コレクションステータスの表示
db.people.stats()を参照してください。
1
3. 指定されたセットを取得する
db.getCollection("human") を使用します。
1
4. 現在のdbにあるすべてのコレクションを取得
db.getCollectionNames()を実行します。
1
ショーコレクションと同様
5. 現在の db のすべての集約インデックスの状態を表示する
db.printCollectionStats()を実行します。
1
IV. MongoBDのユーザー操作
1. ユーザーを追加する
db.createUser({user:"zs",pwd:"111",roles:["read"]})
1
ユーザーの追加、パスワードの設定、読み取り専用かどうかの設定
2、データベース認証、セキュリティモード
db.auth("zs", "111");
3. 現在のすべてのユーザー、ロールを表示する
人を表示する
役割を表示します。
4. ユーザーの削除
db.removeUser("zs");
1
V. コレクションクエリの集計
1. 全レコードを問い合わせる
引用ブロックの内容
db.people.find()を実行します。
select* from people と同じ意味です。
1
2
2. デクラッタリング後の現在の集約されたコレクションのカラムの重複データを問い合わせる
db.people.distingu("name");
select distict name from people と同じ意味です。
1
2
3. 年齢=18のレコードを検索する
db.people.find({"age": 18});
以下と同じです: select * from people where age = 18;
1
2
4. 年齢が18歳のレコードを問い合わせる
db.people.find({age: {$gt: 18}});
select * from people where age > 18 と同じ意味です。
1
2
5. 年齢が < 18 のレコードのクエリ
db.people.find({age: {$lt: 18}});
select * from people where age <18 と同じ意味です。
1
2
6. 年齢が >= 18 のレコードを検索する
db.people.find({age: {$gte: 18}});
select * from people where age >= 18 と同じ意味です。
1
2
7. 年齢が <=18 のレコードを検索する
db.people.find({age: {$lte: 18}});
1
8. 年齢 >= 23 と年齢 <= 26 のクエリ
db.people.find({age: {$gte: 23, $lte: 26}});
1
9. 名前にmongoを含むデータのクエリ
db.people.find({name: /mongo/});
以下と同等です:select * from people where name like '%mongo%';
1
2
10. のmongoで始まるクエリ名。
db.people.find({name: /^mongo/}) とします。
1
以下と同等です:select * from people where name like 'mongo%';
11、指定されたカラム名、年齢データを問い合わせる
db.people.find({}, {name: 1, age: 1});
1
と同じ意味です:select name, age from people;
もちろんnameもtrueかfalseで、river name:1の場合にtureを使っても効果は同じですが、falseの場合はnameを除外して、name以外のカラムの情報を表示します。
12は、指定された列名、年齢データ、年齢を問い合わせる; 18
db.people.find({age: {$gt: 18}}, {name: 1, age: 1});
以下は、select name, age from people where age >18 と同じです。
1
2
13. 年齢で並べ替える
昇順: db.people.find().sort({age: 1});
降順:db.people.find().sort({age: -1})。
1
2
14. 名前 = zhangsan、年齢 = 18 のデータを問い合わせる。
db.people.find({name: 'zhangsan', age: 18});
以下と同等です:select * from people where name = 'zhangsan' and age = '18';
1
2
15. 最初の5つのデータをクエリする
db.people.find().limit(5);
select * from people Limit 5 と同じ意味です。
1
2
16. 10項目以降のクエリデータ
db.people.find().skip(10);
以下と同等です:select * from people where id not in (select id from people limit 10);
1
2
17. 5から10までのデータを問い合わせる
db.people.find().limit(10).skip(5);
ページングに使用可能、上限はpageSize、スキップは最初の数ページ * pageSize
1
2
18.orとクエリ
db.people.find({$or: [{age: 18}, {age: 18}]});
以下と同等:select * from people where age = 18 or age = 18;
1
2
19. 最初のデータをクエリする
db.people.findOne()を実行します。
select * from people limit 1 と同じ意味です。
db.people.find().limit(1);
1
2
3
20. 結果セット内のレコード数を問い合わせる
db.people.find({age: {$gte: 18}}).count();
select count(*) from people where age >= 20 と同じ意味です。
1
2
21. 合計を求める
db.people.find({sex: {$exists: true}}).count()を実行します。
select count(sex) from people と同じ意味です。
VI. コレクションのインデックス作成
1. インデックスの作成
db.people.ensureIndex({name: 1})。
db.people.ensureIndex({name: 1, ts: -1}); //結合インデックス
db.people.ensureIndex({"name":1},{"unique":true}); //一意なインデックス
1
2
3
2. 現在の集約されたコレクションのすべてのインデックスを照会する
db.people.getIndexes() を実行します。
1
3. インデックスレコードの総サイズを表示
db.people.totalIndexSize() を参照してください。
1
4. 現在のコレクションのすべてのインデックス情報を読み取る
db.people.reIndex()を実行します。
1
5. 指定したインデックスを削除する
db.people.dropIndex("name_1") を実行します。
1
6. すべてのインデックス索引を削除する
db.people.dropIndexes()を実行します。
1
VII. コレクションデータの修正、追加、削除
1. 追加
db.people.save({name: 'zhangsan', age: 18, sex: true});
1
追加されたデータに応じたデータカラム、固定ではありません。
2. 修正
db.people.update({age: 18}, {$set: {name: 'changeName'}}, false, true)を実行します。
update people set name = 'changeName' where age = 18 と同じ意味です。
db.people.update({name: 'zhangs'}, {$inc: {age: 12}}, false, true)を実行します。
update people set age = age + 12 where name = 'zhangs' と同じ意味です。
db.people.update({name: 'zhangs'}, {$inc: {age: 12}, $set: {name: 'hoho'}}, false, true)を実行します。
update people set age = age + 12, name = 'hoho' where name = 'zhangs' と同じ意味です。
1
2
3
4
5
6
3. 削除
db.people.remove({age: 12});
---------------------
著者 Tonny__
出典 CSDN
元記事: https://blog.csdn.net/zc375039901/article/details/79951047
著作権について これはブログ主のオリジナル記事です。ブログ記事へのリンクを貼ってください
関連
-
MYSQL "Access denied; you need (at least one of) SUPER privilege(s) for this operation" 問題解決
-
MySQL - エラーです。executeQuery() でデータ操作ステートメントを発行できません。
-
unixODBC:データソース名が見つからない、デフォルトドライバが指定されていないに関する質問
-
Hibernateでhibernate.propertiesが見つからない問題とデータベース方言の更新の問題
-
解決方法 テーブルの定義が正しくありません。自動列は1つだけで、キーとして定義する必要があります。
-
SQL SERVER データベース SELECT INTO および INSERT INTO の使用法(テンポラリテーブルへのデータ挿入を含む)
-
Postgresql でテーブル "t" の FROM 句の項目が見つからない。
-
DB2 SQL エラーの解決法。sqlcode=-420, sqlstate=22018
-
Linuxでmysql-5.7.30をインストールするための詳細な手順
-
mysql: この操作には (少なくとも 1 つの) RELOAD 権限が必要です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
この操作を行うには、少なくとも1つのSUPER権限が必要です。
-
ERROR 1046 (3D000)の解決策です。MySQLでアカウント削除時にデータベースが選択されない問題
-
EF Exception Inquiry (エンティティオブジェクトは、IEntityChangeTrackerの複数のインスタンスから参照できません。)...
-
IEntityChangeTracker の複数のインスタンスからエンティティオブジェクトを参照できない場合の対処法
-
01. プロシージャの結果セットを持つ一時テーブルへのSELECT INTO
-
は、GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
ORA-30926: ソース・テーブルの安定した行のセットを取得できませんか?
-
PDOデータベース接続エラー。SQLSTATE[HY000] [2002] そのようなファイルやディレクトリはありません。
-
MySqlエラー解析'where節'の未知の列'xxx'