MogoDB3

集合

統計を照合するマルチドキュメントデータ

db.collectionName.aggregate()

機能:集約関数、重合条件のデータ削減統計で

パラメータ:重合条件

重合オペレータ

$グループパケット:パケットとパケットによって決定されるものと組み合わせて使用​​される演算子

グループ化演算子

 

$合計加算:{$合計:1}の各グループの統計情報の数(即ち、各性別の数、合計プラス1)を表します

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$合計:1}}})

          重合--------- --------- ----------パケット統計性別によるパケット-----

{ "_id":ヌル、 "TOTAL_NUM":4}
{ "_id": "男性"、 "TOTAL_NUM":2}
{ "_id": "女性"、 "TOTAL_NUM":4}

$合計加算:{$合計:「$年齢」「}各グループの統計の数を表し(即ち、各性別の数、年齢プラス1)

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$和: '$年齢'}}})
{ "_id":ヌル、 "TOTAL_NUM":80}
、{ "_id" "男性"、 "TOTAL_NUM":85}
{ "_id": "女性"、 "TOTAL_NUM":125}
>

 

 

$平均アベレージ

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$平均: '$年齢'}}})
{ "_id":ヌル、 "TOTAL_NUM":40}
、{ "_id" : "男性"、 "TOTAL_NUM":42.5}
{ "_id": "女性"、 "TOTAL_NUM":31.25}
>

最小$分間

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$分: '$年齢'}}})
{ "_id":ヌル、 "TOTAL_NUM":25}
、{ "_id" "男性"、 "TOTAL_NUM":30}
{ "_id": "女性"、 "TOTAL_NUM":24}
>

 

$マックス最大需要

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$最大: '$年齢'}}})
{ "_id":ヌル、 "TOTAL_NUM":55}
、{ "_id" : "男性"、 "TOTAL_NUM":55}
、{ "_id": "女性"、 "TOTAL_NUM":45}
>

$まず、グループごとに最初の文書、指定されたしきい値を返します。

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$最初: '$名'}}})
{ "_id":ヌル、 "TOTAL_NUM": "永强"}
{ "_id": "男性"、 "TOTAL_NUM": "广坤"}
、{ "_id": "女性"、 "TOTAL_NUM": "刘英"}
>

$最後の各グループの最初の文書、指定されたしきい値を返します。

> db.class1.aggregate({$基:{_ ID: '$性別'、TOTAL_NUM:{$最後: '$名'}}})
{ "_id":ヌル、 "TOTAL_NUM": "王天来"}
、{ " _id」: "男性"、 "TOTAL_NUM": "玉田"}
、{ "_id": "女性"、 "TOTAL_NUM": "小刘英"}
>

$プロジェクト

ディスプレイは、文書の構造を変更するために使用します

> Db.class1.aggregate({$プロジェクト:ID {_:0、名前:}} 1)
{ "名前": "劉"}
、{ "名前": "ワイドくん"}
、{ "名前":「グレート謝足"}
、{"名":"小さな夢"}
、{"名":"永強"}
、{"名":"玉田"}
、{"名":"小さな劉英"}
、{"名":"劉缶「}
{」名「:」テイトがある「}
、{」名「:」王の日「}
>

あなたは、ドメイン名の表示を変更し、実際に変更することはできません

> Db.class1.aggregate({$プロジェクト:ID {_:0、NAME: '$名'}})
{ "NAME": "劉"}
、{ "NAME": "ワイドくん"}
、{ "NAME"。 "謝フィート"}
、{ "NAME": "小さな夢"}
、{ "NAME": "永強"}
、{ "NAME": "玉田"}
、{ "NAME": "小劉"}
、{ "NAME" "劉NENG"}
、{ "NAME"} "テートが"
{ "NAME": "日の王"}

 

 

データをフィルタリングする$マッチ

検索クエリで値演算子、

> Db.class1.aggregate({$マッチ:{名:{$のGT: ' 玉田'}}})
{ "_id":のObjectId( "5d315c6f9a271d2e4db00377")、 "名前": "王の日"、 "faimly":{ "父": "劉缶"、 "母": "謝フィート"}}
{ "_id":のObjectId( "5d2fe2be6c7d5889fff5fb31")、 "名前": "謝フィート"、 "趣味": "ダンス" "睡眠" "飲み物、"] "歌う"、 "年齢":45 、 "場所": " 象牙の山"、 "性別": "女性 "}

 

$スキップは、最初のいくつかの文書をスキップ

> Db.class1.aggregate({$スキップ:6})
{ "_id":のObjectId( "5d301d939646724b48d62ae5")、 "名前" "小劉英"、 "趣味": "学習"、 "シネマ" "音楽を聴く"、 "年齢" 24 、 "場所"、 " アイボリー山"、 "性別"、 "女性"}
{ "_id":のObjectId( "5d30261f9646724b48d62b0e")、 "名前": "劉NENG" "年齢" 55、 "趣味 ":" ドリンク"、 "牛"、 "麻雀"]、 "電話":138}
{ "_id":のObjectId( "5d3158d59a271d2e4db00376")、 "名":「テイト"}である
":のObjectId(" 5d315c6f9a271d2e4db00377 ")、"名前{" _idは":"王の日"" faimly ":{"父":" 劉粲」、"母": "谢大脚"}}
>

 

$リミット表示いくつかのドキュメント

> db.class1.aggregate({$制限:3})
{ "_id":のObjectId( "5d2ed0c9226651eee5c79df3")、 "名": "刘英"、 "趣味":[ "吃饭"、 "睡觉"、「打豆豆"]、 "年齢":31、 "場所": "象牙山"、 "性別"、 "女性"}
{ "_id":のObjectId( "5d2ee382226651eee5c79df6")、 "名前": "广坤"、"趣味":[ "抽烟"、 "烫头"]、 "年齢":55、 "場所": "象牙山"、 "性別"、 "男性"}
{ "_id":のObjectId( "5d2fe2be6c7d5889fff5fb31")、"名前": "谢大脚"、 "趣味": "跳舞"、 "睡觉"、 "喝酒"、 "唱歌"]、 "年齢":45、 "場所":"象牙山」、 "性別": "女性"}
>

$ソートソート

> Db.class1.aggregate($ {ソート:{名:}} 1)
{ "_id":のObjectId( "5d30261f9646724b48d62b0e")、 "名前": "劉粲"、 "年齢" 55、 "趣味":[ "飲料"、 "牛"、 "麻雀"]、 "電話":138}
{ "_id":のObjectId( "5d2ed0c9226651eee5c79df3")、 "名前": "劉"、 "趣味"は:[ "食べます"、 "スリープ"、 "豆をプレイ"]、 "年齢":31 、 "場所"、 " アイボリー山"、 "性別"、 "女性"}
{ "_id":のObjectId( "5d3158d59a271d2e4db00376")、 "名前": } "テイトは"
、 "名前"のObjectId( "5d301d939646724b48d62ae5"): "小劉英"、 "趣味": "学習"、 "シネマ" { "_id"] "音楽を聴く"、 "年齢":24 、 "場所": "アイボリー・マウンテン"、 "性別": "女性"}
、{ "_id":ObjectIdが( "5d2fe2f16c7d5889fff5fb32")、 "名": "リトル・ドリーム" "趣味":[、 "スリープ"、 "プレーン" "テレビを見て"]、 "年齢":25 、 "場所": " 象牙の山"、 "性別": "女性 "}
{ "_id":のObjectId( "5d2ee382226651eee5c79df6")、 "名前": "广坤"、 "趣味":[ "抽烟"、 "烫头"]、 "年齢":55、 "場所": "象牙山" 、 "性別": "男性"}
、{ "_id":のObjectId( "5d2fe30a6c7d5889fff5fb33")、 "名": "永强"、 "趣味": "看电视"、 "睡觉"]、 "年齢":25 "場所": "象牙山"}
、{ "_id":のObjectId( "5d2fe49e6c7d5889fff5fb37")、 "名前": "玉田"、 "趣味": "打豆豆"、 "睡觉"]、 "年齢": 30、 "場所": "象牙山"、 "性別"、 "男性"}
{ "_id":のObjectId( "5d315c6f9a271d2e4db00377")、 "名前":"王の日"" faimly ":{"父":"劉はできる""お母さん":"謝は足"}}
{" _id ":ObjectIdが(" 5d2fe2be6c7d5889fff5fb31 ")、"名":"謝ビッグフット""趣味":["ダンス""スリープ""ドリンク""歌"]、"年齢":45 、"場所":" 象牙の山""性別":"女性「}
>性別」: "女性"} >性別」: "女性"} >

高分子パイプ

重合の前の演算結果、次の重合操作は、継続します

db.collcetioName.aggregate([1つの重合、重合2、...])

> Db.class1.aggregate([{$マッチ: {名:{$のGT: ' 缶劉'}}}、{$プロジェクト :{_ ID:0、DISPLAY_NAME: '$名'}}、{$ソート:{ 名前:-1}])
{ "DISPLAY_NAME": "劉"}
、{ "DISPLAY_NAME": "テートである"}
、{ "DISPLAY_NAME": "小劉"}
、{ "DISPLAY_NAME": "小さな夢"}
{ "DISPLAY_NAME": "ワイドくん"}
、{ "DISPLAY_NAME": "永強"}
、{ "DISPLAY_NAME": "玉田"}
、{ "DISPLAY_NAME": "日王"}
、{ "DISPLAY_NAME": "謝ビッグフット"}
>

 

> db.class1.aggregate([{$基:{_ ID: '$性別'、TOTAL_NUM:{$合計:1}}}、{$マッチ:{$や:[{_ ID: '男性'}、{_ ID '女性'}]}}])
{ "_id":ヌル、 "TOTAL_NUM":4}
>

 

固定セット

目的:ログイン処理または一時的なキャッシュ

Mongoのは、固定サイズのセットを作成することができ、多くの場面で使用される固定されたセット、優れた特性の固定のセットを、と呼ばれます

特徴:1、挿入速度

    2、クエリの速度の順

    3、データを早期に解消することができます

    4、収集空間を制御することができます

初出:

db.createCollection(COLLECTIONNAME、{キャップされた:真、サイズ:値、最大:値})

サイズ:KBに設定された固定サイズを設定

最大:文書の数に対応するためにアップ

> db.createCollection( 'ログイン'、{キャップされた:真、サイズ:10、最大:3})

> Db.Log.insert({ID: '1 '、エラー: ' ファイルエラー'})
WriteResult({ "nInserted":} 1)
> db.Log.insert({ID: '2'、エラー:「ファイルエラー'})
WriteResult({ "nInserted":} 1)
> db.Log.insert({ID:' 3 'エラー:'入力エラー「})
WriteResult({ "nInserted":} 1)
> db.Log .insert({ID: '4' 、エラー: ' 入力エラー'})
WriteResult({ "nInserted":} 1)
> db.Log.find({}、{_ ID:0})
{ "ID": " 2 ""エラー":"ファイルエラー"}
、{" ID ":" 3 ""エラー":"入力エラー"}
、{" ID ":" 4 ""エラー":"入力エラー「}
>

 

 

ファイルストレージ

ファイルに保存されているデータベース:

ローカルデータベースでの1、文字列で、ストレージ・ファイル・パス

長所:データベースのスペースを節約。

欠点:データベースまたはファイルの場所が変更された場合には、対応するコンテンツデータベースを変更する必要があります

図2に示すように、データベースに格納されたバイナリデータのようにファイル

長所:ファイルは、限りデータベースとして、データベースに格納されたファイルが失われることはありません

短所:大規模によって占められたファイルが大きい場合、データベース領域、進出することは困難

 

MongoのがGridFSメソッドを使用し、大規模なファイルストレージ

GridFS:MongoDBのは、大規模なプログラムファイルは、大きなファイルの16Mを超えるファイルそのモンゴが開催され、保存されています

 

プログラムが動作します:

Mongoのデータベースでは、ファイルの保存を完了するために、2つのセットを作成します

fs.files:インフォメーションストアファイル、など:ファイル名とファイルタイプ

fs.chunks:ファイルの実際の内容は、バイナリメモリブロックに格納されている、複数の小ブロックに大きなファイルは、それぞれが空間を表します

短所:により、より多くの、そして処理ブロックで構成ファイルストレージへとゆっくりと読んで

 mongofiles -d dbnameは置くファイル

yangrui @ Ubuntuの:〜/ day9 $ mongofiles -d picture.jpg入れgrid_db
2019-07-22T13:51:02.243 + 0800に接続された:localhostの
ファイルを追加しました:picture.jpgを

データベースが存在しない場合は、自動的に作成されます。

> db.fs.files.find()
{ "_id":のObjectId( "5d354ec61d41c850f13fbecf" )、"チャンク":261120、 "uploadDate":ISODate( "2019-07-22T05:51:02.508Z")、「長さ":6487058、 "MD5": "df0a525105fc3b62bcddd62a52ed4926"、 "ファイル名": "picture.jpg"}
>

> db.fs.chunks.find()

 

{ "_id":のObjectId( "5d354ec61d41c850f13fbee3")、 "files_id":のObjectId( "5d354ec61d41c850f13fbecf" )、"N":19、 "データ":BINDATA(0、「D / tY8sjsfXrSdmrhzXZIjzIxudxcFOSV6D39KkjkbzU8zDJt4I6sT04 / z0qI71YoB5RCZBzlQ

fs.filesとfs.chunksはOBJECTIDを通じて仲間です

 

MongoDBはLinuxの中に保存されたドキュメントを取得から

yangrui @ Ubuntuの:〜$ mongofiles -d grid_db GET picture.jpg

長所:ファイルの数に収納しやすいと簡単なデータベースの移行ではなく、あまりにも多くの制限。

短所:低効率リーダー

 

カーソル:

なぜ、カーソルを使用します。

図1は、遅いデータ伝送をもたらす、ネットワークの輻輳を防止するため

2、バックエンドを解決することができ、ユーザーエクスペリエンスの解析を改善

> STU使用は
STU DBに切り替え
>変数を= db.class1.findカーソル()カーソルを作成します

cursor.hasNext()次のデータがあるかどうかを
> cursor.next()次のデータを取得
{
「_id」:のObjectId(「5d2ed0c9226651eee5c79df3」)、
「名前」:「劉」、
「趣味」:
「食べる」を、
"スリープ"、
「プレイピーズ
]、
"年齢":31、
" LOCATION ":"象牙の山"、
"性別":"女性"
}
>

 

PythonのことでのMongoDBデータベース操作

 

インストール

sudo PIP3はpymongoインストール

yangrui @ Ubuntuの:〜$ sudoをのpython3-ピップ安装PIP3をaptのインストール

yangrui @ Ubuntuの:〜$ sudoのはPIP3 pymongoをインストール

手順;

1、リンクされたオブジェクトのmongoデータベースを作成します

CONN = MongoClient( 'localhos'、27017)

2、本番データベースオブジェクト

デシベル= conn.stu

3、オブジェクトのコレクションの生産

my_set = db.class1

4、重合度のCRUDの動作

 

データを挿入します。

インサート()

insert_many()

insert_one()

保存する()

pymongo輸入MongoClientから

#リンクオブジェクト作成
CONN = MongoClientを( 'localhost'の 27017)

#オブジェクトの収集とデータベースオブジェクトを作成し
、DB = conn.stu

my_set = db.class1

#My_set.insert({ '名称': '劉ヘッド'、 '年齢' 50、 '趣味':[ '謝足'、 'ドリンク']})

文書#1の複数の挿入
([{ 'name'の#1 my_set.insert_many : ' :王を得る'、 '年齢' 55} 、{ '名前': ' 王'、 '年齢':76} ])

#1 my_set.insert_one({ '名称': ' 壁劉'、 '趣味':[ '劉'、 '2人']})
#1 my_set.save({ '名称': '趙シリコン'})

 

データを削除します。

削除({}、マルチ= TRUE)

マルチ:デフォルトはtrueで、すべての修飾されたデータを削除します

  偽削除し表現のみに設定します

#My_set.remove({ '名称': '趙シリコン'})

すべてのドキュメントを削除するmy_set.remove()

 

データを探します

()を見つけます

機能:検索データベースの内容

パラメータ:モンゴシェルと同じ 

戻り値:カーソルを返します。

    イテレータ

カーソル

次()

カウント()

限定()

スキップ()

ソート()

mongoshell --------ソート({ '名称':1})

pymongo ------------ソート([( '名前'、1)]) 

***ソートする場合、必ずカーソルが訪問されていないことを確認

 

変更操作

更新()

同じパラメータおよび更新mongoshel

 

update_many()

複数のドキュメント、すべての変更に合わせたとき

 

update_one()

文書にのみ最初のマッチを変更します

 

あなたは=アップサートによって、真の一致しないドキュメントを変更したい場合は、直接ドキュメントを追加

my_set.update({ '名称': 'でき劉'}、{ '$セット' { '年齢': '45'、 '趣味':[ 'ダンス'、 'パフ']}}、UPSERT = TRUE)

**プログラミングプロセスMongoのデータ型のヌル、パイソンなしに用いてもよいです

 

おすすめ

転載: www.cnblogs.com/sike8/p/11223865.html