シンプルな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にどのように対応するかを開発者が理解するのに役立ちます。