Nodejs中mongodb的基础语法封装

本文详细介绍了MongoDB的特性,包括其作为NoSQL数据库的灵活性,以及在Node.js环境中的基本操作,如增删改查。同时,文章提供了MongoDB在Node.js中的操作实例,包括数据库连接、集合操作以及增删改查的方法封装。通过示例展示了如何在Express应用中使用这些封装好的方法来获取和处理数据。
摘要由CSDN通过智能技术生成

Nodejs中mongodb的基础语法封装

mongodb介绍
mongoDB是一个介于关系数据库和非关系数据库之间的开源产品,是最接近于关系型数据库的NoSQL数据库。它的特点:高性能、易部署、易使用,存储数据非常方便。

特点
1、一个mongodb中可以建立多个数据库。MongoDB的默认数据库为"db",该数据库存储在data目录中。MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
2、集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统)中的表格。集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
3、文档是一个键值(key-value)对(即JSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
举一个例子如下:
{“genres”: [“教育”,“剧情” ],“title”: “阿甘正传”},
{“genres”: 123,“title”: “阿甘正传”}

mongodb在Nodejs中的操作
1、安装
npm install mongodb
2、导入模块及引入并连接
const MongoClient = require(‘mongodb’).MongoClient;
const url = ‘mongodb://localhost:27017’;
3、链接库和集合
let db = client.db(‘库名’)
let user = db.collection(‘集合名’)
集合操作

//user.API()  集合操作 	返回 对象
//增
	insertOne(对象数据,(err,res)=>{})  //res = 对象  
	insertMany(arr数据,(err,res)=>{}) //res = 对象  
//删:
  deleteOne({条件},(err,result)=>{})
//改:
  updateOne({条件},{更新后},(err,res)=>{})
  updateMany({条件},{更新后},(err,res)=>{})
  updateMany({条件},{更新后},{配置},(err,res)=>{})
//查:
  user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
  user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
  user.countDocuments((err,num)=>{num返回数量})

增删改查方法封装

// 导入模块 并获取一个属性  
const MongoClient = require('mongodb').MongoClient;

// 连接到数据库的路径
const url = 'mongodb://localhost:27017';

// 声明数据库名
const dbName = "test";

// 创建数据库对象
const client = new MongoClient(url, {
  useUnifiedTopology: true
});

// 暴露操作数据库的四个方法
module.exports = {
  // 查询
  find(collectionName, query, callback) {
    client.connect(function (err) {
      const db = client.db(dbName);
      const collection = db.collection(collectionName);
      collection.find(query).toArray(function (err, docs) {
        console.log(docs);
        callback(docs)
       //   关闭数据库
        client.close();
      });
    })
  },
  /**
   * mongodb新增功能
   * @param {*} collectionName   集合名称
   * @param {*} insertData  新增的数据 一定是一个数组
   * @param {*} callback  操作成功之后的回调函数
   */
  insert(collectionName, insertData, callback) {
    client.connect(function (err) {
      const db = client.db(dbName);
      const collection = db.collection(collectionName);
      collection.insertMany(insertData, function (err, result) {
        callback(result);
        //   关闭数据库
        client.close();
      });
    })
  },
  /**
   * 删除功能
   * @param {*} collectionName 
   * @param {*} query 
   * @param {*} callback 
   */
  delete(collectionName, query, callback) {
    client.connect(function (err) {
      const db = client.db(dbName);
      const collection = db.collection(collectionName);
      collection.deleteOne(query, function (err, result) {
        callback(result);
        //   关闭数据库
        client.close();
      });
    })
  },
  /**
   * 修改数据
   * @param {*} collectionName   集合名称
   * @param {*} query   查询条件
   * @param {*} updateData   修改后的数据
   * @param {*} callback  操作成功的回调函数
   */
  update(collectionName, query, updateData, callback) {
    client.connect(function (err) {
      const db = client.db(dbName);
      const collection = db.collection(collectionName);
      collection.updateOne(query, {
        $set: updateData
      }, function (err, result) {
        callback(result);
        //   关闭数据库
        client.close();
      });
    })
  }
}

使用实例
在使用时,这里我们用到了express框架,需要导入入express模块,然后将封装的dbHelper 文件模块导入

const express = require("express");
const dbHelper = require("./views/lib/dbHelper")
const app = express();
//  静态资源托管
app.use(express.static("views"));
// 首页列表数据传递
app.get("/list", (req, res) => {
  dbHelper.find("lol",{},result=>{
    res.send(result)
  })
})
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值