Node.js 连MongoDB 以及 CURD

本文介绍了如何使用Node.js的MongoDB驱动进行数据库连接,展示了创建、读取、更新和删除(CRUD)操作的示例,并对比了MongoDB原生驱动与Mongoose库的使用。通过Mongoose,可以方便地进行数据验证和操作,简化数据库交互过程。
摘要由CSDN通过智能技术生成

  1. 在MongoDB网站上下载server安装包并安装
  2. vs terminal 执行命令:npm install mongodb 此mongodb是npm包,是MongoDB NodeJS driver
  3. (optional) 安装Robo 3T, 数据库可视化工具

mongodb : MongoDB 的 NodeJS 驱动

连接数据库并创建collections,以下CRUD代码部分是一部分一部分单独测试后copy过来的,全部放在了一起。

const mongodb = require("mongodb");
const MongoClient = mongodb.MongoClient;

const connectionURL = "mongodb://127.0.0.1:27017";
const databaseName = "task-manager";

MongoClient.connect(
  connectionURL,
  { useNewUrlParser: true },
  (error, client) => {
    if (error) {
      return console.log("Unable to connect to database!");
    }
    const db = client.db(databaseName);

	// 1. C: Create documents
    db.collection("tasks").insertMany(
      [
        { description: "Walk in woods", 
          completed: false },
        {
          description: "Go to buy food",
          completed: true,
        },
        {
          description: "Read a book",
          completed: true,
        },
      ],
      (error, result) => {
        if (error) {
          return console.log("Insertion failed");
        }
        console.log(result);
      }
    );
	
	// R: Read documents
	db.collection("tasks").findOne({
      _id: new ObjectId("6127bc7782c4bb18fdfa9979"),
    }, (error, result) => {
      console.log(result);
    });

    db.collection("tasks")
      .find({ completed: false })
      .toArray((error, result) => {
        console.log(result);
      });

    db.collection("users")
      .find({ age: 22 })
      .toArray((error, result) => {
        console.log(result);
      });

    db.collection("users").findOne({ _id: new ObjectId("61288fbbf5c8ebf1f32edeaa")}, (error, user) => {
      if (error) {
        return console.log(error);
      }
      console.log(user);
    });

	// U: Update documents
	db.collection("users")
      .updateOne(
        { _id: new ObjectId("61288fbbf5c8ebf1f32edeaa") },
        {
          $set: { age: 44, name: "Kevin" },
        }
      )
      .then((resolve) => console.log("user updated"))
      .catch((reject) => console.log("user update failed."));

    db.collection("tasks")
      .updateMany({ completed: true }, { $set: { completed: false } })
      .then((result) => {
        console.log("task Updated");
      })
      .catch((error) => {
        console.log("task update failed!");
      });

	// D: Delete documents
	db.collection("users")
      .deleteMany({ age: 22 })
      .then((result) => console.log(result))
      .catch((error) => console.log(error));
    db.collection("tasks")
      .deleteOne({ description: "Walking in woods" })
      .then((result) => console.log("task deleted"))
      .catch((error) => console.log(error));   
  });

mongoose

NPM包: npm install mongoose,mongodb的API相对底层,mongoose 在幕后使用mongodb, 提供了数据验证等很多有用的功能,也有通过Mongoose连MongoDB的例子。

const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/task-manager-api", {
  useNewUrlParser: true,
  // useCreateIndex: true, not supported
});
const User = mongoose.model("User", {
  name: {
    type: String,
  },
  age: {
    type: Number,
  },
});
const me = new User({ name: "Andrew", age: 27 });
// 在名称为users的collection中添加一个document
// mongoose 自动将model名称转换为小写+复数,作为collection名称。
// 例如:User -> users, Diary -> diaries
me.save()
  .then(() => console.log(me))
  .catch((error) => console.log(error));

只要进行数据库操作,终端就需要始终运行 mongod 命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值