мангуст + экспресс

//Model
const Item = require(./model/ItemSchema)

//API
app.get('/api/items', (req, res) => {
  //here we get all query and define
  const page = req.query.page || 1;
  const limit = req.query.limit || 10;
  const sortField = req.query.sortField;
  const sortOrder = req.query.sortOrder === 'asc' ? 1 : -1;
  const filter = req.query.filter;
  const search = req.query.search;

  const query = {}; 
  //here we need to in query obj if query is filter or search
  if (filter) {
    query.field = filter;
  }
  if (search) {
    query.$text = { $search: search };
  }

  Item.find(query)
    .sort({ [sortField]: sortOrder })
    .skip((page - 1) * limit)
    .limit(limit)
    .exec((err, items) => {
      if (err) {
        return res.status(500).send(err);
      }
      return res.send(items);
    });
});

Этот код добавляет параметр поискового запроса к конечной точке API и использует его для фильтрации результатов запроса к базе данных с помощью оператора $text. Этот оператор позволяет выполнять текстовый поиск по строковым полям в базе данных и возвращает только те документы, которые соответствуют поисковому запросу.

Вы также можете использовать другие операторы, например оператор $regex, для выполнения расширенного поиска по вашим данным. Например:

if (search) {
  query.field = { $regex: search, $options: 'i' };
}

Этот код использует оператор $regex для выполнения поиска без учета регистра в поле «поле» ваших документов и возвращает все документы, соответствующие поисковому запросу

Спасибо:)