はじめに
今までMySQLは使ったことがあったのですが、初めてMondoDBを使って、フィールド(RDBでいうカラム)を指定する方法がわからなかったので、まとめます。
やりたいこと
以下のようなドキュメント(RDBでいうテーブル)があったとします。
| id | name | age | birthday | address |
|---|---|---|---|---|
| 1 | Jack | 30 | 19900812 | A City |
| 2 | Amy | 31 | 19890812 | B Town |
| 3 | David | 32 | 19880812 | C Street |
このドキュメントから、idとnameだけ取得したいです。
RBDなら、以下のSELECT文で取得できるでしょう。
SELECT (id, name) from USERS;
やり方
mongooseだと、以下の様に取得するフィールドを指定できます。
UsersModel.find({},{ id: 1, name: 1 });
find()の第2引数のオブジェクトの中に、フィールド名: 1と書くと取得対象になり、
フィールド名: 0と書くと、取得対象外になります。(デフォルトは1みたいです)。
私がやったときは、上記のように書くと_idが必ずついて来てしまった(MongoDBの仕様?)ので、以下のように書いていました。
UsersModel.find({},{ _id: 0, id: 1, name: 1 });