Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to exclude one particular field from a collection in Mongoose?

I have a NodeJS application with Mongoose ODM(Mongoose 3.3.1). I want to retrieve all fields except 1 from my collection.For Example: I have a collection Product Which have 6 fields,I want to select all except a field "Image" . I used "exclude" method, but got error.. This was my code.

    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);         }     }); 

But this returns error

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

Also I tried, var Query = models.Product.find().exclude('title','Image'); and var Query = models.Product.find({}).exclude('title','Image'); But getting the same error. How to exclude one/(two) particular fields from a collection in Mongoose.

like image 882
dany Avatar asked Jan 28 '13 09:01

dany


1 Answers

Use query.select for field selection in the current (3.x) Mongoose builds.

Prefix a field name you want to exclude with a -; so in your case:

Query.select('-Image'); 

Quick aside: in JavaScript, variables starting with a capital letter should be reserved for constructor functions. So consider renaming Query as query in your code.

like image 196
JohnnyHK Avatar answered Sep 28 '22 20:09

JohnnyHK