MST

星途 面试题库

面试题:MongoDB基本数据类型之日期类型应用

在MongoDB中,如何使用日期数据类型来记录文档的创建时间?请给出相应的代码示例,并说明在查询时如何筛选出近一周内创建的文档。
36.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 记录文档创建时间
    • 在插入文档时,可以使用new Date()来获取当前时间并插入到文档中。假设我们有一个users集合,示例代码如下(以Node.js的MongoDB驱动为例):
const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

async function insertUser() {
    try {
        await client.connect();
        const database = client.db('test');
        const users = database.collection('users');
        const newUser = {
            name: 'John Doe',
            createdAt: new Date()
        };
        const result = await users.insertOne(newUser);
        console.log('Inserted user with _id:', result.insertedId);
    } catch (e) {
        console.error(e);
    } finally {
        await client.close();
    }
}

insertUser();
  • 在Python中使用pymongo库:
from pymongo import MongoClient
from datetime import datetime

client = MongoClient('mongodb://localhost:27017')
db = client.test
users = db.users

new_user = {
    'name': 'John Doe',
    'createdAt': datetime.now()
}
result = users.insert_one(new_user)
print('Inserted user with _id:', result.inserted_id)
  1. 筛选近一周内创建的文档
    • 在Node.js中:
async function findRecentUsers() {
    try {
        await client.connect();
        const database = client.db('test');
        const users = database.collection('users');
        const oneWeekAgo = new Date();
        oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);
        const recentUsers = await users.find({
            createdAt: { $gte: oneWeekAgo }
        }).toArray();
        console.log('Recent users:', recentUsers);
    } catch (e) {
        console.error(e);
    } finally {
        await client.close();
    }
}

findRecentUsers();
  • 在Python中:
from pymongo import MongoClient
from datetime import datetime, timedelta

client = MongoClient('mongodb://localhost:27017')
db = client.test
users = db.users

one_week_ago = datetime.now() - timedelta(days = 7)
recent_users = list(users.find({
    'createdAt': { '$gte': one_week_ago }
}))
print('Recent users:', recent_users)

在MongoDB的查询中,$gte操作符表示“大于或等于”,我们通过获取当前时间减去7天得到一周前的时间,然后使用这个时间来筛选出近一周内创建的文档。