MST

星途 面试题库

面试题:MongoDB 基础增删改查之复杂查询

假设有一个存储用户信息的集合,每个文档包含字段'name'(字符串类型,用户名)、'age'(数字类型,年龄)、'hobbies'(数组类型,用户爱好)和'register_date'(日期类型,注册日期)。请写出查询语句,找出年龄在 25 到 35 岁之间,爱好中包含'football',且注册日期在过去一年内的用户。
38.1万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

假设使用的是 MongoDB 数据库,查询语句如下:

db.users.find({
    age: { $gte: 25, $lte: 35 },
    hobbies: { $in: ['football'] },
    register_date: { $gte: new Date(new Date().getTime() - 365 * 24 * 60 * 60 * 1000) }
});

如果是使用其他数据库,例如 SQL 数据库(假设表名为 users),假设数据库支持日期函数和数组查询(部分数据库对数组查询语法可能不同),示例代码如下:

SELECT * 
FROM users
WHERE age BETWEEN 25 AND 35
  AND hobbies::text LIKE '%football%'
  AND register_date >= CURRENT_DATE - INTERVAL '1 year';

上述 SQL 代码中 hobbies::text LIKE '%football%' 只是一种模拟数组中包含特定元素的方式,在实际不同数据库中需要按其支持的数组查询语法来。例如 PostgreSQL 有 @> 操作符等。