MST

星途 面试题库

面试题:Node.js Express集成MongoDB实现复杂查询及数据更新

假设在Node.js的Express应用中集成了MongoDB,数据库中有一个`products`集合,文档结构为`{ _id: ObjectId, name: String, price: Number, category: String }`。要求编写一个Express路由,实现查询出`category`为`electronics`且`price`大于100的产品,并将这些产品的`price`提高10%,请给出完整的路由处理函数代码及必要的注释。
32.4万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
const express = require('express');
const router = express.Router();
const { MongoClient } = require('mongodb');

// 连接字符串
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);

// 定义路由处理函数
router.get('/updateProducts', async (req, res) => {
    try {
        // 连接到MongoDB
        await client.connect();
        const db = client.db('yourDatabaseName'); // 替换为你的数据库名
        const productsCollection = db.collection('products');

        // 查询category为electronics且price大于100的产品
        const query = { category: 'electronics', price: { $gt: 100 } };

        // 更新操作,将price提高10%
        const update = {
            $mul: {
                price: 1.1
            }
        };

        const result = await productsCollection.updateMany(query, update);

        res.status(200).json({
            message: `成功更新 ${result.modifiedCount} 个产品`,
            result: result
        });
    } catch (err) {
        console.error(err);
        res.status(500).json({ error: '服务器错误' });
    } finally {
        // 关闭数据库连接
        await client.close();
    }
});

module.exports = router;