1. ホーム
  2. javascript

[解決済み] Mongoose、findで特定のフィールドを選択する

2022-04-21 15:42:13

質問

で特定のフィールドだけを選択しようとしています。

exports.someValue = function(req, res, next) {
    //query with mongoose
    var query = dbSchemas.SomeValue.find({}).select('name');

    query.exec(function (err, someValue) {
        if (err) return next(err);
        res.send(someValue);
    });
};

しかし、私のjsonレスポンスでは、_idも受け取っています。私のドキュメント・スキーマには、_idとnameの2つのフィールドしかありません。

[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]

なぜ?

解決方法は?

その _id フィールドは、明示的に除外しない限り、常に存在します。除外するには - の構文があります。

exports.someValue = function(req, res, next) {
    //query with mongoose
    var query = dbSchemas.SomeValue.find({}).select('name -_id');

    query.exec(function (err, someValue) {
        if (err) return next(err);
        res.send(someValue);
    });
};

または、オブジェクトを介して明示的に。

exports.someValue = function(req, res, next) {
    //query with mongoose
    var query = dbSchemas.SomeValue.find({}).select({ "name": 1, "_id": 0});

    query.exec(function (err, someValue) {
        if (err) return next(err);
        res.send(someValue);
    });
};