0

I have a collection of item that has price depending on user membership (silver, gold, platinum)

{ 
  ..
  memberships: [
   {level: "silver", price: 100},
   {level: "gold", price: 90},
   {level: "platinum", price: 80}
  ]
}

when silver users browse for items, they will need to see items sorted by price using memberships price where level is silver.

How do I sort this ?

user1955934
  • 3,185
  • 5
  • 42
  • 68
  • Does this answer your question? [Sort nested array of objects](https://stackoverflow.com/questions/12432727/sort-nested-array-of-objects) – nimrod serok May 30 '22 at 16:06

1 Answers1

1

You can use $unwind and then $sort in aggregation pipeline. eg: here

db.collection.aggregate(
{ $unwind: "$memberships" },
{ $sort: { "memberships.price": 1 }},
{ $group: {
    _id: "$_id",
    "memberships": { $push: "$memberships" }
  }
})
Ashok
  • 2,846
  • 1
  • 12
  • 20