分1234はじめに本記事では,MongoDBのクエリを解説します。MongoDBはリレーショナルデータベース(以下"RDB"と略記)ではないため,SQLは使用できません。その代わり,MongoDB特有の「Mongoクエリ言語」を用います。Mongoクエリ言語のCRUD操作については公式ドキュメントに詳しい解説があります。本記事の構成は,最初にMongoクエリ言語の特徴について解説し,2ページ目ではSQLとMongoクエリ言語の比較を行います。3ページ目では,MongoDBクエリ言語の使い方を説明し,最後に,プログラミング言語からの利用の仕方の説明として,Rubyからの利用を説明します。Mongoクエリ言語の特徴Mongoクエリ言語には以下の特徴があります。コレクションの各メソッドを用いてCRUD操作をしますメソッドの引数にはJSON形式のデータを渡します変数が使えます制御構造が使えますカーソルが使えますドキュメントの要素に簡単にアクセスができますMongoクエリ言語はMongoDBのコマンドラインインターフェースであるMongoDBシェルから使用できます。シェルは以下のコマンドから起動します。test>コレクションの各メソッドを用いてCRUD操作をしますたとえば,データを挿入する場合は,コレクション「col1」のメソッドinsertを呼び出します。)更新,参照,削除といったデータ操作も,すべてコレクションのメソッドを用います。メソッドの引数にはJSON形式のデータを渡しますデータを挿入する場合には,insertの引数にJSONのデータを渡します。)参照する場合は,絞込みの条件をJSON形式で指定します。以下の例では,キー"name"の値が正規表現"/mongo/"に一致するものを検索しています。)変数が使えますMongoDBのシェルではJavaScriptの文法で,変数が使えます。そのため,挿入するデータや検索条件をあらかじめ変数で定義しておき,メソッドに渡すことができます。)制御構造が使えますMongoDBのシェルではJavaScriptの制御構造が使えます。以下のようにforループでデータを挿入できます。)カーソルが使えます検索結果に対するカーソルを定義して,while等の制御構造でアクセスできます。)ドキュメントの要素に簡単にアクセスができますたとえば以下のようなドキュメントを挿入したとします。)すると,そのドキュメントに対して,JavaScriptの文法を用いて,以下のように簡単にアクセスできます。キーarrayの配列の2番目の要素を表示"tue"MongoDBのデータ構造MongoDBでは,データベースごとに複数のコレクションを持ち,コレクションごとに複数のドキュメントを持ちます。ドキュメントはJSON形式で,以下のような構造をしています。ドキュメントの例RDBとMondoDBのデータ構造の比較MongoDBのデータ構造とRDBのデータ構造の比較を以下の表に記載します。MongoDBでは,"_id"の値に自動的に一意な文字列が採番されます。RDBとMongoDBの大きな違いは,RDBではテーブル中のすべてのレコードが同じカラムを有するのに対し,MongoDBではドキュメントごとに自由なフィールドを定義できる点です。それ以外のデータ構造は,呼称は異なるものの,RDBとMongoDBで対応するものが存在します。RDBにおいて,データベースが複数のテーブルを持ち,テーブルが複数のレコードを持ち,レコードがカラムにより区切られているように,MongoDBにおいても似たような構造を持つことができるのです。Mongoクエリ言語への理解を深めていきましょう。OpenStandia所属。オープンソースのR&Dとセミナー講師を担当。Debian,Ubuntu,Liferayのコミュニティで活動した後,MongoDBの翻訳に関わり,丸の内MongoDB勉強会を始める。実家がお寺で,住職の資格を所持する坊主系エンジニア。OpenStandia所属。オープンソースを使ったSIやサポートの業務に従事。藤崎と共同で丸の内MongoDB勉強会を始める。好きなものはLinuxとRuby。OpenStandia所属。オープンソースを使ったSIや製品開発業務に従事。丸の内MongoDB勉強会では広報兼雑用係を務める。趣味はレザークラフト,ダイビング,スキー,キャンプ,ジェットスキー,カメラ等々。作って滑って撮って潜れるエンジニア。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。