Home > database >  aggregation with respect to one field except one value of that field
aggregation with respect to one field except one value of that field

Time:10-28

I am writing a query to do aggregation with respect to one field, however, I want to exclude this aggregation for one value of that field

let coAuthorCutThreshold =100

network.aggregate([
  { $group: { _id: '$title', title :{$ne: "class notes"}, count: { $sum: 1 } }} ,
  { $match: { count: { $gt: coAuthorCutThreshold } } },
  { $sort: { count: -1 } }
]).forEach(function (obj) {
  cutTitles.push(obj._id)
});

I want to do aggregation with respect to title but do to not want to do aggregation where the title is "class notes". I tried many command but did not work

I want to include all those values in cutTitles except where title is "class notes"

CodePudding user response:

Match in order to filter out the documents you don't want to group before the group stage.

let coAuthorCutThreshold = 100

network.aggregate([
  { $match: { title: { $ne: "class notes" }}},
  { $group: { _id: '$title', count: { $sum: 1 }}},
  { $match: { count: { $gt: coAuthorCutThreshold }}},
  { $sort: { count: -1 }}
]).forEach(function (obj) {
  cutTitles.push(obj._id)
});
  • Related