How to use Aggregate in mongoose

681    Asked by preeta_3367 in Data Science , Asked on Jul 15, 2021

 How do I define the following MongoDB aggregate query in mongoose:

db.contacts.aggregate([{$group: { "_id": { code: "$Code", name: "$Name" } } }])

The objective of the query is to pull a list of distinct codes and names.

My current model code is:

'use strict'; 
var mongoose = require('mongoose'), 
Schema = mongoose.Schema, 
ObjectId = Schema.ObjectId; 
var fields = { 
Code: { type: String }, 
Name: { type: String } 
}; 
var contactSchema = new Schema(fields); 
module.exports = mongoose.model('Contacts', contactSchema);
Router looks like this:
api.contacts = function (req, res) { 
Contacts.find({ AgencyTranslation: /^BROADCASTING/ },
function(err, contacts) { 
if (err) { 
res.json(500, err); 
} else { 
res.json({contacts: contacts}); 

});

I tried various variations, also looked up the sample code at mongoose API docs, but I cannot seem to get it working.

(Note: the above query does work in the MongoDB console.)

Answered by Arjun Arora

To use mongoose aggregate example you can do with $match if you need this AgencyTranslation: /^BROADCASTING/ condition

Contacts.aggregate([ 
{ $match : { AgencyTranslation: /^BROADCASTING/ } },
{ $group: { "_id": { code: "$Code", name: "$Name" } } }
   ], function(err, contacts) {
// ...
});

Your Answer

Interviews

Parent Categories