MongoDB

简介: 【10月更文挑战第28天】

在Node.js中连接MongoDB并进行数据库操作是一个常见的任务。以下是如何使用Node.js来连接MongoDB,并执行一些基本的数据库操作(如创建数据库、插入文档、查询文档、更新文档和删除文档)的步骤和代码示例。

1. 安装MongoDB驱动

首先,你需要安装MongoDB的Node.js驱动。如果你使用的是淘宝的npm镜像(cnpm),可以使用以下命令安装:

cnpm install mongodb

2. 连接到MongoDB

使用MongoClient对象连接到MongoDB数据库。以下是连接的基本代码示例:

const {
    MongoClient } = require('mongodb');

async function main() {
   
    // MongoDB 连接 URI
    const uri = "mongodb://localhost:27017";
    // 创建一个新的 MongoClient
    const client = new MongoClient(uri, {
    useNewUrlParser: true, useUnifiedTopology: true });

    try {
   
        // 连接到 MongoDB 服务器
        await client.connect();
        console.log("成功连接到服务器");

        // 指定数据库
        const database = client.db('runoob');

        // 这里可以执行数据库操作
    } finally {
   
        // 确保在完成后关闭连接
        await client.close();
    }
}

main().catch(console.error);

3. 创建数据库和集合

在MongoDB中,数据库和集合(类似于关系数据库中的表)是在需要时自动创建的。你可以通过执行插入操作来创建它们:

const collection = database.collection('exampleCollection');
const doc = {
    name: "Example", type: "Test" };
const result = await collection.insertOne(doc);
console.log(`新文档已创建,ID 为: ${
     result.insertedId}`);

4. 查询文档

以下是如何查询集合中的文档:

const findResult = await collection.find({
   }).toArray();
console.log('查询到的文档:', findResult);

5. 更新文档

以下是如何更新集合中的文档:

const updateResult = await collection.updateOne({
    name: "Example" }, {
    $set: {
    type: "Updated" } });
console.log(`更新的文档数量: ${
     updateResult.matchedCount}`);

6. 删除文档

以下是如何删除集合中的文档:

const deleteResult = await collection.deleteOne({
    name: "Example" });
console.log(`删除的文档数量: ${
     deleteResult.deletedCount}`);

完整代码示例

结合以上步骤,以下是一个完整的代码示例,展示了如何连接到MongoDB,创建数据库和集合,插入、查询、更新和删除文档:

const {
    MongoClient } = require('mongodb');

async function main() {
   
    const uri = "mongodb://localhost:27017";
    const client = new MongoClient(uri, {
    useNewUrlParser: true, useUnifiedTopology: true });

    try {
   
        await client.connect();
        console.log("成功连接到服务器");
        const database = client.db('runoob');
        const collection = database.collection('exampleCollection');

        // 插入文档
        const doc = {
    name: "Example", type: "Test" };
        const insertResult = await collection.insertOne(doc);
        console.log(`新文档已创建,ID 为: ${
     insertResult.insertedId}`);

        // 查询文档
        const findResult = await collection.find({
   }).toArray();
        console.log('查询到的文档:', findResult);

        // 更新文档
        const updateResult = await collection.updateOne({
    name: "Example" }, {
    $set: {
    type: "Updated" } });
        console.log(`更新的文档数量: ${
     updateResult.matchedCount}`);

        // 删除文档
        const deleteResult = await collection.deleteOne({
    name: "Example" });
        console.log(`删除的文档数量: ${
     deleteResult.deletedCount}`);
    } finally {
   
        await client.close();
    }
}

main().catch(console.error);
目录
相关文章
|
2月前
|
弹性计算 监控 网络协议
阿里云轻量应用服务器200M带宽是真的吗?峰值带宽解析与选择注意事项说明
阿里云轻量应用服务器以"200M峰值带宽"和高性价比吸引了大量个人开发者及中小企业用户,但该带宽实为共享型峰值带宽而非独享保障,受资源争抢、双向共享限制及无SLA保障等因素制约,实际可用带宽往往低于标称值。文章深入解析了其技术逻辑,指出该产品适用于小型Web、博客、开发测试等轻量场景,不适合高网络质量要求的业务。同时,文章就高峰期带宽受限、异常流量、跨境路由等实际挑战提供了应对策略,并给出了性能验证、优化配置及升级ECS等建议,帮助用户理性选型、合理规划云资源。
|
3月前
|
人工智能 自然语言处理 安全
招投标垂直AI工具选型技术解析:垂直大模型+RAG架构的落地实践
本文剖析AI标书工具的技术分野:通用大模型存在领域理解浅、隐性风险漏判、内容幻觉等致命短板;而专业方案依托自研垂直大模型+RAG架构,深度融合招投标规则,实现高准确率结构化解析、100%事实可溯生成,并通过硬规则引擎与语义校验双轨风控、国密级私有化部署,保障央国企等高合规场景零废标、零泄密。
|
4月前
|
人工智能 自然语言处理 前端开发
ReAct Agent到底是什么?推理范式的底层升级
ReAct(推理+行动)非模型,而是让大模型自主解决问题的逻辑框架:通过“思考→行动→观察→再思考”闭环,实现跨系统、多步、可追溯的主动推理,专治答案碎片化、路径不确定、意图模糊等企业级复杂问题。
468 1
|
5月前
|
存储 移动开发 小程序
手把手教你搭建一套知识付费会员小程序系统:课程兑换码+分销裂变+会员体系完整实战
这是一套成熟稳定的开源知识付费系统,支持视频/音频/图文/电子书等多形态课程、VIP会员、分销返佣、课程兑换码及社区互动,基于ThinkPHP6+uni-app开发,可私有部署、数据自主、零平台抽成。(239字)
907 0
|
6月前
|
监控 网络协议 测试技术
如何制定IP地址风控规则?误判排查与策略清单
本文剖析IP风控误判困局:吉林监管警示银行“误伤”,上海警方破获IP池黑产。指出IP仅宜作环境信号,非身份凭证。详解拦截/加验/限流/评分四类规则,提供误判排查清单与阈值设定方法,助风控团队科学升级IP策略。
如何制定IP地址风控规则?误判排查与策略清单
|
10月前
|
弹性计算 Kubernetes 安全
云监控 2.0 面向实体的全链路日志审计与风险溯源
云监控2.0日志审计构建全链路安全溯源体系,通过统一采集基座融合云产品与运行时数据,依托UModel实体建模打通ACS、Infra、K8s多域孤岛,实现AK操作、网络异常、容器威胁、主机攻防等场景的一键溯源与闭环分析,助力企业从“看日志”迈向“懂业务”的智能安全运营。
|
11月前
|
存储 供应链 数据可视化
RFID传送带智能采集带来意想不到效果
RFID技术融合传送带,实现物品自动识别、追踪与数据联动,广泛应用于物流、制造、零售、医疗等领域,大幅提升分拣、追溯与管理效率,降低人工错误,推动智能化升级。
|
监控 iOS开发 CDN
“企业微信iPad协议”凌晨沉默实验:当群发接口只剩心跳声
预热群发遇阻,企业微信iPad协议暗藏静默流控:5分钟超300条即限速,无报错仅返空ID。拆分50人群组,间隔65秒发送,启用CDN直传,终完成2987人触达,折叠率仅0.7%。接口沉默处,亦有信号。
590 0
|
人工智能 监控 关系型数据库
阿里云开发者的共性痛点 ——「自建 GPT + 云服务」方案?
某工业客户在阿里云上构建AI故障分析系统时,遭遇云资源适配难、运维重、数据割裂三大瓶颈。试用「向量引擎」后,3行代码对接阿里云生态,冷启动50ms,自动适配CDN/负载均衡,请求延迟降60%;多可用区部署,RTO<30秒,稳定性达99.99%;直连OSS/RDS,实现GPT+私有数据闭环,延迟<1秒;支持等保三级与日志审计,数据零驻留,合规安全;联动阿里云计费,月成本直降70%。平台深度融入阿里云架构,让企业级AI应用一周落地,省时省力更省钱。
505 0