1.データベース構成項目が起動します#
パラメータ | 意味 |
---|---|
--dbpath | ディレクトリデータベースファイルを指定します |
- 港 | デフォルトのポートは2701728017です |
- フォーク | 台湾の保護者の道の後を開始します |
--logpath | ログファイルの出力パスを指定します。 |
--config | 設定ファイルを指定します |
--auth | データベースを起動するための安全な方法は、デフォルトでは検証しません |
1.1 mongo.confの#
dbpath=E:\mongo\data
logpath=E:\mongo\log
port=50000
复制代码
1.2サーバーの起動#を
mongod --config mongo.conf
复制代码
1.3クライアントの開始#を
mongo --port 50000
复制代码
2.インポートおよびエクスポートデータ#
このコマンドは、ファイル形式で保存されます
- mongoimportエクスポートデータ
- インポートデータmongoexport
パラメータ | 意味 |
---|---|
-h [--host] | データベース接続 |
- 港 | ポート番号 |
-u | ユーザー名 |
-p | パスワード |
-d | エクスポートされたデータベース |
-d | エクスポートされたデータベース |
-c | 輸出コレクションを指定します |
-o | エクスポートされたファイルの保存パス |
-q | フィルタリング |
2.1準備データ#
use school;
var students = [];
for(var i=1;i<=10;i++){
students.push({name:'zfpx'+i,age:i});
}
db.students.insert(students);
db.students.find();
复制代码
2.2バックアップレコード#
mongoexport -h 127.0.0.1 --port 50000 -d school -c students -o stu.bak
复制代码
2.3レコードの削除#を
> db.students.remove({});
WriteResult({ "nRemoved" : 10 })
复制代码
2.4輸入レコード#
mongoimport --port 50000 --db school --collection students --file
stu.bak
复制代码
3.バックアップおよびリカバリ#
3.1 mongodump #
MongoDBのでは、データをバックアップするためにMongoDBのmongodumpコマンドを使用します。このコマンドは、指定したディレクトリにすべてのデータをエクスポートすることができます。
mongodump -h DBHOST -d dbnameは-o dbdirectory
- MongDB例えば、サーバアドレス、-h:127.0.0.1:27017 127.0.0.1、もちろん、あなたは、ポート番号を指定することができます
- 例えば、バックアップする-dデータベース・インスタンス:試験
- -oバックアップデータの保存場所
mongodump -d school -o data.dmp
复制代码
3.2 mongorestore #
MongoDBは、バックアップデータを復元するmongorestoreコマンドを使用します。
- --hostのMongoDBサーバのアドレス場所
- --db -dデータベースインスタンスが復元される必要があります
- 最後のパラメータ、データが配置されているバックアップの場所を設定します
mongorestore data.dmp
mongorestore -d school data.bmp/school
复制代码
Mongodumpは、主な違いは、選択基準バックアップ、データベース全体が、実行される各mongoexportコレクション動作であることができるBSON可読性のMongodump JSONのmongoexport出力よりも大きいので、直接JSONファイルを操作してデータを復元することができ(潜在的な互換性の問題のBSONは、JSONに変換します)。
4.ダイレクトコピーデータ#
データベース5.ロックとアンロック#を
完全性とデータの一貫性を保つため、最初の輸出、輸出とアンロックする前にロックを記述します。
> use admin;
switched to db admin
> db.runCommand({fsync:1,lock:1});
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}
> db.fsyncUnlock();
{ "ok" : 1, "info" : "unlock completed" }
复制代码
6.セキュリティ対策#
- 物理的な分離
- ネットワークの分離
- ファイアウォール(IP / IPセグメント/ホワイトリスト/ブラックリスト)
- ユーザー名とパスワードによる認証
6.1ユーザ管理#
ビューの役割6.1.1 #
show roles;
复制代码
内蔵役割
- データベースユーザの役割:、READWRITEを読みます。
- データベース管理の役割:DBADMIN、のdbowner、USERADMIN。
- クラスタ管理の役割:clusterAdmin、ClusterManagerの、clusterMonitor、hostManage。
- バックアップとリカバリの役割:バックアップ、復元、
- すべてのデータベース・ロール:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- スーパーユーザーの役割:ルート
- 内部の役割:__システム
ユーザー作成の古い方法6.1.2 位
> db.addUser('zfpx','123456');
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' inste
ad
Successfully added user: { "user" : "zfpx", "roles" : [ "root" ] }
show roles;
复制代码
ユーザーを作成するための新しい方法6.1.3 位
db.createUser({
user:"zfpx2",
pwd:"123456",
roles:[
{
role:"readWrite",
db:"school"
},
'read'
]
})
复制代码
复制代码
> db.createUser({user:'zfpx2',pwd:'123456',roles:[{role:'read',db:'school'}]});
Successfully added user: {
"user" : "zfpx2",
"roles" : [
{
"role" : "read",
"db" : "school"
}
]
}
复制代码
6.1.4閲覧ユーザーの権限#
> db.runCommand({usersInfo:'zfpx2',showPrivileges:true});
{
"users" : [
{
"_id" : "admin.zfpx2",
"user" : "zfpx2",
"db" : "admin",
"roles" : [
{
"role" : "read",
"db" : "school"
}
]
}
复制代码
6.1.5認証局サーバーの起動#
dbpath=E:\mongo\data
logpath=E:\mongo\log
port=50000
auth=true
复制代码
6.1.6ユーザーのログイン名とパスワードの変更#を
> use admin;
> use admin;
switched to db admin
> db.auth('zfpx','123456')
1
> db.changeUserPassword('zfpx','123');
> db.auth('zfpx','123')
1
复制代码
6.1.7個人情報の修正#を
db.runCommand({updateUser:'zfpx',pwd:'123', customData:{
name:'珠峰培训',
email:'[email protected]',
age:18,
}});
> db.runCommand({usersInfo:'zfpx',showPrivileges:true})
复制代码
- ユーザーの操作は、管理データベースの下で動作するために必要とされています
- あなたは、現在のデータベースに、データベースにのみ効果を、以下の操作を実行した場合
- デフォルトではrootユーザー、不安、もはや推奨を作成時代遅れアドユーザー、
7. Databaseアドバンスト・コマンド#
7.1データの準備#を
var students = [
{name:'zfpx1',home:'北京',age:1},
{name:'zfpx2',home:'北京',age:2},
{name:'zfpx3',home:'北京',age:3},
{name:'zfpx4',home:'广东',age:1},
{name:'zfpx5',home:'广东',age:2},
{name:'zfpx6',home:'广东',age:3}
]
db.students.insert(students);
复制代码
7.2カウント#
レコードの数を確認してください
db.students.find().count();
复制代码
7.2 DISTINCT重複する値を見つけることができません#
db.runCommand({distinct:'students',key:'home'}).values;
复制代码
[ "北京", "广东" ] 复制代码
7.3グループのグループ化#
db.runCommand({
group:{
ns:集合名称,
key:分组的键,
initial:初始值,
$reduce:分解器
condition:条件,
finalize:完成时的处理器
}
});
复制代码
都市によってグループ化された7.3.1、の和の時代に資格の人を求めているすべての都市#
db.runCommand({
group:{
ns:'students',
key:{home:true},
initial:{total:0},
$reduce:function(doc,result){
result.total += doc.age;
},
condition:{age:{$gt:1}},
finalize:function(result){
result.desc = '本城市的总年龄为'+result.total;
}
}
});
复制代码
7.4コレクションの削除#を
db.runCommand({drop:'students'});
复制代码
7.5 runCommand関数一般的に使用されるコマンドの#
db.runCommand({buildInfo:1});
db.runCommand({getLastError:"students"});
db.persons.insert({_id:1,name:1});
db.persons.insert({_id:1,name:1});
db.runCommand({getLastError:"students"});
复制代码
8.固定の設定は何です#
MongoDBは(キャップされたコレクション)を設定して、固定サイズのために、私たちが想像できる循環キューとして、収集空間がなくなったとき、その要素は最初のヘッドのほとんどをカバーする挿入という固定サイズのセットと優れた性能である固定します要素!
8.1特性#
-
- ませんインデックス
-
- INSERTクエリの速度は非常に高速であり、空間の再配分を必要としません。
-
- ログを格納するために特に適し
8.2固定セットの作成#を
- 固定createCollectionによって設定され、蓋をオプションがtrueに設定されて作成してみましょう:
- 1000のプロパティ:あなたはまた、文書の数、プラス最大を指定することができます。
- 固定セットのコレクションかどうかを決定:db.logs.isCapped()
- サイズは、[KB]の単位で、コレクション全体空間のサイズであります
- 最大は、文書の行コレクションの数で、単位は[A]であります
- 空間の制限に達した場合、次の原稿が挿入され、第一の文書を上書きし、文書が上限数に達した場合、次の文書は、最初の文書をカバーする、同一の中に挿入されます。上限は、2つのパラメータが論理[かつ]である取ることが決定されます。
- キャップをキャップされました
db.createCollection('logs',{size:50,max:5,capped:true});
复制代码
8.3非固定の固定セットにセット#
db.runCommand({convertToCapped:"logs",size:5});
复制代码
9. gridfsの#
- gridfsバイナリストレージファイルを使用して、MongoDBの独自のファイルシステムです。
- MongoDBのバイナリオブジェクトは、BSON形式に保存することができます。
- BSONは、オブジェクトが、ボリュームは4Mを超えることはできません。だから、MongoDBの提供
mongofiles
。それによって大量のデータを保存し、透過的に小さなファイル(256K)に大きなファイルすることができます。 - (:画像など、オーディオ、ビデオ、など)の16Mの上にそれらのファイルを保存し、復元するために使用GridFS(BSONファイルの制限)。
- fs.filesとfs.chunks:ファイルを保存するために、2つのコレクションをGridFS。
- 各ファイルの実際の内容は、チャンク(バイナリデータ)に存在している、(ファイル名、CONTENT_TYPE、だけでなく、ユーザー定義属性)に関連するメタデータやドキュメントは、コレクション内のファイルの存在となります。
9.1ファイルのアップロード#を
- -Dデータベース名
- ソース・ファイルの場所-L
- プットは、ファイル名を指定します
mongofiles -d myfiles put test.txt
复制代码
9.2ファイルの入手とダウンロード#を
mongofiles -d myfiles get 'test.txt'
复制代码
9.3ビューのすべてのファイルの#
mongofiles -d myfiles list
>db.fs.files.find()
>db.fs.chunks.find({files_id:ObjectId('')})
复制代码
9.4ファイルの削除#
mongofiles -d myfiles delete "test.txt"
复制代码
9.5 evalのサーバー側のスクリプト#
- JSの実行文
- カスタムJSグローバル変数
- 定義関数
- 保存されたJavaScript
db.eval("1+1");
db.eval("return 'hello'");
db.system.js.insert({_id:"x",value:1});
db.eval("return x");
db.system.js.insert({_id:"say",value:function(){return 'hello'}});
db.eval("say()");
复制代码
ます。https://juejin.im/post/5d07009fe51d454d1d62851dで再現