未分類

MongoDBのチュートリアルをこなす

投稿日:

MonogoDBの薄い本からメモ

基礎

まず、概念のだいたいの把握から。

  1. データベース 通常のデータベースと同じ概念
  2. コレクション ≒ テーブル
  3. ドキュメント ≒ 行
  4. フィールド ≒ 列
  5. インデックス RDBMSのものとよく似ている
  6. カーソル データを取得する際、カーソルを経由して操作を行う

ハンズオンの開始

シェルの起動

db.help()  そのdbが行うことのできるメソッド一覧

db.メソッドカッコ無し そのメソッドのJavascriptソース

データベースの利用開始

learnという名前のデータベース使用開始。(この時点でデータベースがなくてもOK)

最初のデータ挿入

unicornsというコレクションに対してデータを挿入する

まったく異なるデータの挿入

スキーマレスなので同じコレクションに異なるフィールドのデータをいれてもよい

セレクタの習得

学習用のデータの挿入

pdfからコピペで

男性で体重が700以上のユニコーンは?

gtはGreater Than 同様に $ltはless than, $lteはless than equal,$gteはgreater than equal,$neはnot equal

,で並べた条件はand orを使う場合は$or[評価式,評価式]

例えば、「りんごが好き」か「みかんが好き」か「体重が500未満」に合致するデータを探すには

 

$existはフィールドの存在や欠如にマッチ

例えばvampiresフィールドの存在しないデータを取り出すには

 柔軟な検索条件 $where

データを更新する

やってはいけない例

updateはセレクターと置き換えたいフィールドを引数にとるが、置き換えたいフィールドだけでデータを更新してしまう(その他のフィールドは失われる)

一部のフィールドを更新する正しい例

$set以外の更新修飾子

$inc

データの値を相対的に増やしたり減らしたりする

$push

フィールドの配列にデータを追加する

Upsert

セレクタに合致するものがあれば更新、なければ挿入

3番目の引数をtrue

普通の更新ではデータは変わらない(この場合存在しないので何もないという回答)

Upsertを使うとデータができている

2回目以降は数が増えていく

複数同時更新

デフォルトでupdateは最初にみつけたデータしか更新しない

 

4番目の引数をtrueにするとセレクタに合致したものすべてを更新する

検索の習得

取得するフィールドの選択

デフォルトではすべてのフィールドを取得する。取得するフィールドを指定したい場合は2番めのパラメータで指定する

_idは基本出力されるので、出力しない場合は_id: falseを明示する

sort()

順序を指定したい場合はsortメソッドにフィールド名と1(昇順)か−1(降順)を渡す

 

*インデックス化されていないフィールドはソートのサイズ制限があり、サイズ制限を超えるとデータを返さないので注意

ページング

ページングは、limitメソッドやskipメソッドを使って実現できる

名前順で、1つ飛ばして2件のデータを取得した

count()

 

データモデリング

joinとかないので、アプリケーションで2回クエリーを発行してIDを探してから、そのIDで探すか、データを配列やハッシュで埋め込んだり、コレクションをわけないこと(非正規化)も考えてみる

使いドコロ

スキーマレス、書き込みが早い、耐久性が前ほど問題じゃなくなった、全文検索は未実装、トランザクションはない、Hadoopとの接続あるよ、位置情報が扱えるよ、未成熟=経験が少ないから色々予想外の問題が出るかもね

-未分類
-

執筆者:

関連記事

jRubyとSwingでWindowsのGUIアプリをつくる~Hello World

SwingはJavaのGUIツールキット。 JavaのGUIツールキットには簡素なSWTとかAWTとか、最新のJavaFX2.0とかあるけど、SwingはSWTやAWTより比較的リッチなインターフェイ …

Bashでよく使う/使いたいキーバインド

  ctrl + c 実行中のコマンドを中断 長いコマンドを打っていて何も実行せず次の行を出したいときとかにも使う ctrl + r 過去に使ったコマンドをインクリメンタルにサーチ ctrl …

no image

KEN_ALL.CSVを使える形にする

[browsershot url=”www.post.japanpost.jp/zipcode/download.html” width=”400&# …

ラジオボタンをつかったFont AwesomeのRating StarとCSS自動ナンバリング

  By: Moyan Brenn – CC BY 2.0 今のところCSSが嫌いな言語ナンバーワンです. エラーも吐かずにシレーっと変な表示をするから. 目次1 Rating …

no image

Google ドライブのプレゼンテーション埋込みを試す

ログインしなくてもKeyノートも見られるし、ダウンロード・印刷も可能 このあたりをもう少し細かく設定できたらな