MongoDB01

MongoDBは、ドキュメント指向のデータベースです

主キー文書
の文書の一意の主キー
(配列を除く)すべてのデータタイプのサポートを
複合主キー

 

主キーのObjectIdオブジェクト
の既定のドキュメントのプライマリキー
すばやく12バイトのIDを生成するためには、
作成時間を含み

 

モンゴシェルを使用します

 

文書の作成
db.collection.insertOneを()

。DB <コレクション> .insertOne(
<文書>、
{
writeConcern:<文書>
}

writeConcern文書は、この文書作成書き込みレベルのセキュリティを定義し、セキュリティレベルの解釈は、データベース書き込み動作の書き込み成功し、損失のリスクレベルより高い、低い、書き込み操作を遅延高くてもよいです


配列演算子
{<フィールド>:{$全 :[<値1>、<値2> ...]}}

{<フィールド>:{$ elemMatch:{<Query1を>、<QUERY2>、...}}}

 

スクリーニング文書
{<フィールド>:{:/パターン/、 '<オプション>'}}
{<フィールド>:{:/パターン/ <オプション>}}

 

そして$に連動演算子で使用された場合、それが唯一の使用/パターン/ <オプション>は、
ドキュメントオブジェクトのJの始めに、ユーザーの名前やバンクCを読み込み、
{$で:[/ ^ C /({名前db.accounts.find 、/ ^ J /]}} )

 


ユーザ名読みLIE(大文字小文字を区別しない)銀行の書類含みます
({:{$正規表現名db.accounts.find :/ LIE /、$オプションを'I'}})

 

 

 

ドキュメントのカーソル

db.collection.find()のみ最初の20の文書を、カーソルのカーソル反復することなく、文書のコレクションを返しリスト

インデックスは、文書を設定にアクセスするには、カーソルを使用する
> = VAR MyCursorとdb.accountd.find();
MyCursorと[0]

 

10分後にカーソルが自動的にオフになり
、カーソルを保持するnoCursorTimeout()関数を使用することができる効果的であった
> VAR MyCursorと= db.accounts.find()。 NoCursorTimeout()

イニシアティブカーソルクローズする
> myCursor.closeを()

 

cursor.hasNext()、旅行書類が設定されていないがtrueを返す
ドキュメントcursor.next()文書の次のセット上のポインタを

> VAR MyCursorと= db.accounts.find({名: "とLihua"})。
一方、(myCursor.hasNext()){
printjson(myCursor.next())
}

 

cursor.forEach(<関数>)

VAR MyCursorと= db.accounts.find({名: "とLihua"})。
myCursor.forEach(printjson)

 

cursor.limit(<番号>)
cursor.skip(<オフセット>)
> db.accounts.find({名: "リシ"})。限界(1)

 

カウント機能

cursor.count(<applySkipLimit>)
デフォルトでは、<applySkipLimit>、虚偽である、すなわちcursor.count((cursor.skip考慮していない)と
cursor.limit()効果

ソートソート-1フォワード逆順
順序付けられた請求項に定義されたcursor.sort(<docment>)文書
のユーザー名は、文書モードのアルファベット順に配列されている銀行口座の残高を降順に係る
> db.accounts.find()。ソート( {バランス:-1、名前:1 })


最大文書の銀行口座残高読み取り
> db.accounts.find()ソート({バランス :-1})。.Limit(1)


cursor.limitでcursor.skip()()の前に行わ
(cursor.skip中)(cursor.sort)および(前に行わcursor.limit)

仕分け>はスキップ>制限

 

文書投影
db.collection.find(<照会>、<投影 >)
(プロジェクターを使用して、db.collection.findない)フィルタに一致する完全な文書を返し
、選択文書内のフィールドの一部を返すことができるプロジェクタを使用して
、{フィールド:含める}
1は0を返すフィールド、フィールドへの復帰を表します

> db.accounts.find({}、{名前:1})

デフォルトでは、文書の主キーを返します

> db.accounts、.find({}、{名前:1、_id:0})

主キー文書に加えて、文書は、主キーで使用することができないすべてのフィールドが投影文書に含まれるべきリスト、またはすべてのフィールドが含まれてはならないリストを投影操作せずに、またはその両方、混合することを含みます


配列フィールドに投影を使用して
$スライスオペレータは配列フィールドの要素の一部を返すことができます


> db.account.find({}、{_ ID:0、名前:1、接触:{$スライド:1}})//は問い合わせ配列の最初の要素
:{$スライド:-1}コンタクト //接触アレイ相互の最初の要素
の接触:{$スライド:[1,2 ]}


そして$ elemMatchオペレータは、最初の要素のフィルタ基準フィールドを満たす配列を返すことができます

db.accounts.find({}、
コンタクト:{$ elemMatch:{$のGT: "アイルランド"}}

 

文書更新

db.collection.updateを()

デシベル。<コレクション> .update(<問い合わせ>、<更新>、<オプション>)

<更新>文書はすべての更新演算子が含まれていない場合は、db.collection.update()は、<直接交換、<問い合わせ>スクリーニング条件のセットに一致する文書のセットを更新を使用します。

アリスは、口座残高200に変更され
> db.accounts.update({名: "アリス"}、{名前"アリス"、Blance:200です})


主キー_idドキュメントを変更することはできません

使用<更新>でドキュメントが更新され、文書全体を交換し、<問い合わせ>文書に沿って、唯一の最初の章が更新されます

20と80の間の文書アカウント口座残高照会
> db.account.update({残高:{$の GT:20、$のLT:80}}、{名: "紙幣"、blance:50、性別:「M 「})

 

特定のフィールドを更新します。


$更新を設定したり、フィールドを追加
$未設定フィールドを削除
$リネーム・フィールドの名前を変更
$のINCを加速電界である
MUL乗じ$フィールド
減少$フィールドの値は、最小比較
$最大比較フィールドの値が増加します

 

 

オペレータを更新
{$集合:{<フィールド1> :<VALUE1>、...}}

 

> db.accounts.update(
{名: "ジャック"}、
{$セット:
{
"contact.5": "新しい連絡先"
}

}

既存の配列フィールドの範囲外の場所に新しい価値を追加した場合、フィールドは配列の長さを展開される、配列メンバーはヌルセットが割り当てられていません


{解除$:{<フィールド1> : ""、...}}
フィールドを削除します。

> db.accounts.update(
{名: "ジャック"}、
{$解除:
{
バランス: ""
}
}

割り当て$ unsetコマンドは、(「」)の動作結果には影響を与えません

$ unsetコマンドフィールドが存在しない場合、その文書の内容は変更されません

未設定の$素子アレイの1、配列の長さが変化しない場合は、値がリセットされ、


{$名前を変更:{<フィールド1> :<newName1>、<フィールド2> ... <newName2>、}}
フィールドの名前を変更する
フィールドの名前を変更するには、renameコマンドが存在しない$、文書の内容は変更されません。

新しいフィールド名がすでに存在する場合、そのフィールドは、オリジナルでカバーされます

$古いフィールドにコマンドの名前を変更し、新しいフィールドが配列要素を指すことはできません


更新フィールド値
{$ INC:{<フィールド1> :<amount1>は、} ...} // フィールド引く
{$ mulのを:{<フィールド1> ... <番号1>、}} // 掛け

更新された口座残高
> db.accounts.update(
{名: "ダビデは"}、
{$ incは次のとおりです。
{
バランス:-0.5
}
}

$の株式会社と$ MUL命令は、数値フィールドでのみ使用することができる
フィールドが更新される存在しない場合は、$の株式会社は、コマンドの値を増減するためのフィールド、およびフィールドの値を作成し、$ MULは、フィールドを作成しますが、フィールドの値が0に設定されています


比較フィールド値更新した後
、{$分:{<フィールド1>:<VALUE1>、} ...}
{$マックス:{<フィールド1> ... <VALUE1>、}}

小さいまたは大きいフィールドに戻るには、マルチ比較操作を更新する前に
フィールドを更新するために存在しない場合は$ minと$ maxのフィールドを作成すると、フィールドの値は、コマンドの値を更新するように設定されています


更新され、そうでない場合、更新値型のフィールドタイプ、$ minと$ maxのコマンドは、データ照合BSONの種類に応じて比較され、


配列演算子を更新します。

$ addToSetは、配列に要素を追加し
、配列の要素を削除$ポップ
選択的要素を取り除く配列に$プルを
$ pullAllは、
配列$プッシュに要素を追加します

李華のアカウントのドキュメントに連絡先を追加
> db.accounts.update(
{名: "立華"}、
{$ addToSet:{CONCAT: "中国"}}

すでに挿入する値が配列フィールドに存在する場合、$ addToSetは、重複する値を追加しません


$ addToSet配列を使用して、文書を挿入すると、フィールドの順に値を挿入しても繰り返し、それは無視重複としてカウントしたときの値を持ちます

$ addToSet配列インサートが配列フィールドで更新されます、配列に埋め込まれてなる
あなたは複数の素子間の配列フィールドに追加したい場合は、必要とされる$各オペレータ


> db.accounts.update(
{名: "とLihua"}、
{$ addToSet:{コンタクト:{$それぞれ:[ "contact1"、 "contact2"]}}}

 

配列フィールドから要素を削除し
、{$ポップ:{<フィールド> :<-1 | 1>、} ...}

李華のアカウントのドキュメントからの最後の連絡先を削除
> db.accounts.update(
{名: "立華"}、
{$のPOP:{名刺:1}}

$ポップ演算子はフィールドのみのアレイで使用することができ
、配列の最後の要素を取り除いた後、それは空の配列を残します

配列フィールドから特定の要素を削除
| {...}、<条件条件の値>:{<フィールド1> $プル}
、[<VALUE1>、<値2> ...]:{<フィールド1>:{$すべてを引き出します。}。}


{$ pullAll:{<フィールド1>:<値1>、<値2>]}} <=> {$プル:{<フィールド1>:{で$:[<値1>、<値2>]}}}


あなたは要素を削除したい場合は、配列の値と配列要素の順序取り除かなければならないとの配列がある
とまったく同じ


$ PullAllコマンドは、彼らが完全に一致されたフィールドのドキュメント要素とフィールドオーダーを削除します

文書の要素指定したフィールドとのフィールド値からなる文書の削除$プルコマンド
フィールドは完全に順序と一致する必要はありません


配列フィールドにフィールドを追加します
{:... {$プッシュ <VALUE1>、}、<フィールド>}

、および$ addToSetコマンド、コマンド配列フィールドで指定された$のプッシュが存在しない場合、このフィールドは、元の文書に追加されます

 

 

配列内の特定の要素更新
db.collection.updateを(
{<配列>:<クエリセレクタ>}、
{<更新演算子> :. "<配列> $" {。}}値


$アレイは、フィルタに一致する最初の配列要素のプレースホルダであり
、使用するアップデート演算子と配列要素のフィルタ基準を満たすように更新することができます


華バンクドキュメントを見る
> db.accounts.find(
{名: "とLihua"}、
{名前:. 1、NEWARRAY :. 1、_id:0}
).pretty()

{
"名前": "とLihua"、
"NEWARRAY":[
"PUSH2"、
"PUSH1"
]
}


> db.accounts.update(
{名: "とLihua"、
NEWARRAY: "POS2"
}、
{
$セット:{
"NEWARRAY $": "更新"
}
}


アレイ内のすべての要素を更新
{<更新演算子>: "{ <配列> $ []":値}}

$ []の全ての要素の要素を参照してください。


> db.accounts.update(
{名: "とLihua"}、
{$セット:{
"contact.0 $ []。": "111111111"
}}

 


文書更新
デシベルを。<コレクション> .update(<問い合わせ>、<更新>、<オプション>)

<オプション>より多くのオプションupdateコマンド

UPDATは、フィルタ条件のみが文書に対応する使用するコマンドに対応します。デフォルトでは、フィルタ基準は、複数のドキュメントに対応していても、更新コマンドは、まだのみ、ドキュメントを更新しています

マルチ{:<ブール>}
フィルタ基準を満たす複数のドキュメントを更新するには、マルチオプション
> db.accounts.update(
{}、
{$ SET:{
通貨: "USD"
}}、
{マルチ:trueに}


MongoDBの単一の文書のみがアトミック操作を保証することができ、複数の文書は、アトミック操作を保証するものではありません

 

文書の削除
db.collection.removeを()

デシベル。<コレクション> .remove(<問い合わせ>、<オプション>)


銀行ドキュメントのバランスを削除し50
db.collections.remove({バランス:50})

コマンドは、フィルタに一致するすべての文書を削除する削除し、あなただけの最初の章ドキュメントのフィルタ条件を満たして削除したい場合は、あなたがjustOneオプションを使用することができます


> db.accounts.remove(
{残高:{$のLT:100}}、
{justOne:真}


删除集合
db.collection.drop()
。DB <コレクション> .drop({writeConcern:<文書>})

たくさんの捕集効率の文書の数は、文書のすべてが高くない削除するには、removeコマンドを使用している場合は、この場合には、より効果的な方法は
、インデックスを再構築し、文書を再確立するためのコマンドをドロップすることです

 

おすすめ

転載: www.cnblogs.com/quyangyang/p/11326618.html
01-