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