75

Mongoose ODM ( Mongoose 3.3.1 )を使用した NodeJS アプリケーションがあります。コレクションから 1 を除くすべてのフィールドを取得したいと考えています。例: 6 つのフィールドを持つコレクション Product があり、フィールド "Image" を除くすべてを選択したいと考えています。「除外」メソッドを使用しましたが、エラーが発生しました..これは私のコードでした。

    var Query = models.Product.find();
    Query.exclude('title Image');

    if (req.params.id) {
        Query.where('_id', req.params.id);
    }


    Query.exec(function (err, product) {
        if (!err) {
            return res.send({ 'statusCode': 200, 'statusText': 'OK', 'data': product });
        } else {
            return res.send(500);
        }
    });

しかし、これはエラーを返します

Express
500 TypeError: Object #<Query> has no method 'exclude'.........

また、試してみvar Query = models.Product.find().exclude('title','Image');ましvar Query = models.Product.find({}).exclude('title','Image'); たが、同じエラーが発生しました。Mongoose のコレクションから 1 つまたは (2 つの) 特定のフィールドを除外する方法。

4

6 に答える 6

145

query.select現在の (3.x) Mongoose ビルドでのフィールド選択に使用します。

除外するフィールド名の前に-;を付けます。だからあなたの場合:

Query.select('-Image');

余談ですが、JavaScript では、大文字で始まる変数はコンストラクター関数用に予約する必要があります。したがって、コードのQueryように名前を変更することを検討してください。query

于 2013-01-28T13:50:31.817 に答える
44

その .exclude 関数についてどこで読んだかわかりません。どのドキュメントにも見つからないからです。

ただし、find メソッドの 2 番目のパラメーターを使用して、フィールドを除外できます。

公式ドキュメントの例を次に示します。

db.inventory.find( { type: 'food' }, { type:0 } )

この操作は、type フィールドの値が food であるすべてのドキュメントを返しますが、type フィールドは出力に含まれません。

于 2013-01-28T09:48:34.847 に答える
32
Model.findOne({ _id: Your Id}, { password: 0, name: 0 }, function(err, user){
  // put your code
});

このコードは私のプロジェクトで機能しました。ありがとう!!ごきげんよう。

于 2015-11-03T14:14:42.903 に答える