MongoDB?
- MongoDBは、分散ファイルストレージに基づくデータベースです。C ++言語で書かれています。WEBアプリケーションにスケーラブルで高性能なデータストレージソリューションを提供するように設計されています。
- MongoDBはデータをドキュメントとして保存し、データ構造はで
键值对(key=>value)
構成されます。 - MongoDBドキュメントも同様
JSON 对象
です。フィールド値には、他のドキュメント、配列、およびドキュメント配列を含めることができます。 - MongoDBは、リレーショナルデータベースと非リレーショナルデータベースの製品であり、非リレーショナルデータベースの中で最も用途が広く、リレーショナルデータベースに最も似ています。
1.MongoDBの用語
SQLの用語 | 説明 | MongoDBの用語 | 説明 |
---|---|---|---|
データベース | データベース | データベース | データベース |
テーブル | テーブル | コレクション | セットする |
行 | 行 | 資料 | ドキュメンテーション |
カラム | フィールド | フィールド | 範囲 |
.和$
特別な意味があり、特定の環境でのみ使用できます
2.MongoDBデータ型
データの種類 | 説明 |
---|---|
ストリング | ストリング。データの保存に一般的に使用されるデータ型。MongoDBでは、UTF-8でエンコードされた文字列は有効です。 |
整数 | 整数値。値を格納するために使用されます。使用するサーバーに応じて、32ビットまたは64ビットに分類できます。 |
ブール値 | ブール値。ブール値(true / false)を格納するために使用されます。 |
ダブル | 倍精度浮動小数点値。浮動小数点値を格納するために使用されます。 |
最小/最大キー | 値をBSON(バイナリJSON)要素の最小値と最大値と比較します。 |
アレイ | 配列、リスト、または複数の値をキーとして保存するために使用されます。 |
タイムスタンプ | タイムスタンプ。ドキュメントが変更または追加された特定の時刻を記録します。 |
オブジェクト | 埋め込みドキュメントに使用されます。 |
ヌル | null値を作成するために使用されます。 |
シンボル | シンボル。このデータ型は基本的に文字列型と同等ですが、特別な記号型を使用する言語で一般的に使用される点が異なります。 |
日付 | 日付時刻。UNIX時間形式を使用して、現在の日付または時刻を保存します。独自の日付と時刻を指定できます。Dateオブジェクトを作成し、年、月、日の情報を渡します。 |
オブジェクトID | オブジェクトID。ドキュメントの作成に使用されたID |
バイナリデータ | バイナリデータ。バイナリデータを格納するために使用されます。 |
コード | コードのタイプ。JavaScriptコードをドキュメントに保存するために使用されます。 |
正規表現 | 正規表現タイプ。正規表現を格納するために使用されます。 |
2.MongoDBユーザー認証ログイン
cmd環境の場合:
- ユーザー名とパスワードを設定する
use admin
db.create(
{
user:'root',
pwd:'123456',
roles:[{
role:'userAdminAnyDatabase',
db:'admin'
}]
})
- ユーザー認証ログイン
(1)
mongo --port 27017 -u 'root' -p '123456' --authenticationDatabase 'admin'
(2)
mongo --port 27017
use admin
db.auth('root','123456)
3.MongoDBステートメント
- データベースを作成します。
use 数据库名;
- データベースを削除します。
db.dropaDtabase()
- コレクションを作成します。
db.createCollection(name,options)
- コレクションの削除:
db.集合名.drop()
- ドキュメントを挿入:
db.集合名.insertOne/insertMany(document)
db.集合名.save(document)
- ドキュメントの更新:
db.集合名.update()
- クエリドキュメント:
db.集合名.find({条件})
- ドキュメントの削除:
db.集合名.remove({条件})
4.MongoDBインデックス
インデックス:これは基本的にソートされたリストであり、インデックスの値とこの値を含むデータの物理アドレスを格納します。
機能:データの取得、ソート、およびグループ化を高速化し、ディスクI / Oを削減できます。
一般的には次のとおりです。主キー/外部キー列、比較用の列、範囲検索用の列、頻繁に配置される列/グループ化用の列
ステートメント:
- インデックスの作成:
db.集合名.createIndex({索引名:1/-1})
- インデックスを表示:
db.集合名.getIndexes()
db.集合名.find({条件}).explain()
- インデックスの削除:
db.集合名.dropIndex({条件})
の種類:
- 複合インデックス
- ハッシュインデックス
- マルチキーインデックス
- 一意のインデックス
- スパースインデックス
- TTLインデックス
4.MongoDB集計クエリ
db.集合名.aggregate([{$group:{_id:'$artist',著作和:{$sum:1}}}])
$ sum $ svg
$ min $ max
$ push $ addToSet
$ first $ last
ステージオペレーター:
$project
ドキュメント構造の変更、ドキュメント内のコンテンツの名前変更、追加、削除
// 1:显示 0:不显示
db.books.aggregate([{$project:{_id:0,title:1,price:1}}])
$match
ドキュメントをフィルタリングする
// 类似与find()
db.books.aggregate([{$match:{
'price':{$gte:150}}}])
$group
コレクション内のドキュメントをグループ化します。これは、統計結果に使用できます。
// 1:升序
db.books.aggregate([{$group:{_id:'$artist',数量:{
'$sum':1}}}])
$sort
ソート昇順)
// 1:升序
db.books.aggregate([{$sort:{
'price':1}}])
$limit
返されるドキュメントの数を制限する
db.books.aggregate([{$limit:2}])
-
$skip
指定された数のドキュメントをスキップして、残りのドキュメントを返します -
$unwind
ドキュメント内の配列タイプのドキュメントを複数の部分に分割すると、メディアにはドキュメントに応じて配列内に1つの値が含まれます
db.classes.aggregate([{$match:{
'classname':'class1'}},{$unwind:'$student'}])