Mongoose how to combine find, sort, $and Mongoose how to combine find, sort, $and express express

Mongoose how to combine find, sort, $and


You can use $or operator to find the messages from 'A' to 'B' and from 'B' to 'A'.

And sort method to get messages in descending order.

const messages = await Message  .find(    {      $or: [        { from: { $eq: req.query.user }, to: { $eq: req.user.name } },        { from: { $eq: req.user.name }, to: { $eq: req.query.user } },      ],    },  )  .sort({time: 'descending'})

or you can use query option

const messages = await Message  .find(    {      $or: [        { from: { $eq: req.query.user }, to: { $eq: req.user.name } },        { from: { $eq: req.user.name }, to: { $eq: req.query.user } },      ],    },    null,    { sort: { time: -1 } },   )