使用 `$gte`(大于等于)和 `$lte`(小于等于)操作符构建时间段查询条件。使用 `$regex` 操作符进行模糊查询,`$options: 'i'` 表示不区分大小写。使用 `$and` 操作符将它们组合起来。
// 处理查询的路由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" });}});