シンプルなSQL SELECTをMongoDB find()に変換する

基本的なSQL SELECT文をカラム選択付きでMongoDBのfind()クエリとプロジェクションに変換する方法を学びます。フィールドマッピングの基本を解説します。

Basic Queries

詳細な説明

SELECTからfind()へ

最も基本的な変換は、SQL SELECT文をMongoDBのdb.collection.find()メソッドにマッピングすることです。第1引数はフィルター(条件なしの場合は空の{})、第2引数は返されるフィールドを制御するプロジェクションです。

SQLの例

SELECT name, email, age
FROM users

生成されるMongoDBクエリ

db.users.find(
  {},
  {
    name: 1,
    email: 1,
    age: 1,
    _id: 0
  }
)

主要なマッピングルール

SQL要素 MongoDBの対応
SELECT col1, col2 フィールドを1に設定したプロジェクションオブジェクト
SELECT * プロジェクション引数なし(全フィールドが返される)
FROM table db.tableコレクション参照
カラム除外 デフォルトの_idフィールドを抑制する_id: 0

プロジェクションの動作

MongoDBでは、プロジェクションドキュメントは1でフィールドを含め、0で除外します。_idを除いて、同じプロジェクション内で包含と除外を混在させることはできません。_idは常に明示的に除外できます。プロジェクションが提供されない場合、ドキュメントのすべてのフィールドが返され、SQLのSELECT *と同等です。

コレクションの命名

SQLテーブル名はMongoDBコレクション名に直接マッピングされます。SQLテーブルは複数形のsnake_case(user_accounts)を使用することが多く、MongoDBコレクションもデフォルトで同じ規約に従います。コンバーターは元のテーブル名をコレクション名として保持します。

ユースケース

リレーショナルデータベースからMongoDBへレポーティングダッシュボードを移行する際、最もシンプルな読み取りクエリの変換から始めることが多いです。このパターンは他のすべての変換の基盤を確立し、MongoDBのfind()メソッドがSQL SELECTにどのように対応するかを開発者が理解するのに役立ちます。

試してみる — SQL to MongoDB Query

フルツールを開く