はじめに
今まで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 });