Express + MongoDB 实现在筛选时间段中用户名的模糊查询

news/2025/2/24 17:39:29

使用 `$gte`(大于等于)和 `$lte`(小于等于)操作符构建时间段查询条件。使用 `$regex` 操作符进行模糊查询,`$options: 'i'` 表示不区分大小写。使用 `$and` 操作符将它们组合起来。

javascript">// 处理查询的路由

app.get("/users", async (req, res) => {

  const { startDate, endDate, usernameKeyword } = req.query;

  try {

    let query = {};

    // 构建时间段查询条件

    if (startDate && endDate) {

      query.createdAt = {

        $gte: new Date(startDate),

        $lte: new Date(endDate),

      };

    } else if (startDate) {

      query.createdAt = {

        $gte: new Date(startDate),

      };

    } else if (endDate) {

      query.createdAt = {

        $lte: new Date(endDate),

      };

    }

    // 构建用户名模糊查询条件

    if (usernameKeyword) {

      const usernameQuery = {

        username: {

          $regex: usernameKeyword,

          $options: "i",

        },

      };

      if (Object.keys(query).length > 0) {

        // 如果已经有时间段查询条件,使用 $and 操作符组合条件

        query = {

          $and: [query, usernameQuery],

        };

      } else {

        query = usernameQuery;

      }

    }

    // 执行查询

    const users = await User.find(query);

    res.json(users);

  } catch (error) {

    console.error("Error fetching users:", error);

    res.status(500).json({ error: "Internal Server Error" });

  }

});


http://www.niftyadmin.cn/n/5864657.html

相关文章

[设计模式] Builder 建造者模式

目录 意图 问题 解决 Applying the Builder pattern 主管 结构 伪代码 生成器模式适合应用场景 实现方法 生成器模式优缺点 与其他模式的关系 C代码 main.cc:概念示例 Output.txt:执行结果 意图 Builder 是一种创建性设计模式&#xff0c…

C语言【指针篇】(一)

前言 指针基础概念理解,从底层出发理解指针 C语言【指针篇】(一) 前言正文1. 内存和地址1.1 内存1.2 究竟该如何理解编址 2. 指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.3 指针变量的大小 3. 指针变量类型的意义…

Qt 中集成mqtt协议

一,引入qmqtt 库 我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台时 方便,直接编译就行了。 原始仓库路径:https://github.com/emqx/qmqtt/tree/master 二,使用 声明一个单例类,将订阅到…

from flask_session import Session 为什么是Session(app)这么用?

在 Flask 中,from flask_session import Session 和 Session(app) 的用法是为了配置和使用 Flask-Session 扩展,将用户的会话(Session)数据存储到服务器端(如 Redis、数据库或文件系统),而不是默…

计算机视觉:经典数据格式(VOC、YOLO、COCO)解析与转换(附代码)

第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…

MySQL 单表访问方法详解

单表访问 MySQL 单表访问方法详解:高效查询之道**一、 查询执行基础****二、 访问方法 (Access Method) 概念****三、 具体访问方法 (从最优到最差)****四、 注意事项****五、 总结与优化建议****六、 电商网站数据存储应用示例****七、 数据备份与恢复模型 (补充)*…

Python安全之反序列化——pickle/cPickle

一. 概述 Python中有两个模块可以实现对象的序列化,pickle和cPickle,区别在于cPickle是用C语言实现的,pickle是用纯python语言实现的,用法类似,cPickle的读写效率高一些。使用时一般先尝试导入cPickle&…

基于AT89C52单片机的出租车计价器

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90419909?spm1001.2014.3001.5501 C17 部分参考设计如下: 摘要 随着城市交通行业的迅速发展,出租车作为最主要的城市公共交通工具之一…