在Node中如何操作MongoDB数据库

2023-11-29 23:17:58 浏览数 (1)

MongoDB是一款流行的文档型数据库,可以在Node.js中使用官方的MongoDB包或者第三方包mongoose进行操作。

使用官方的MongoDB包来操作

官方文档:https://mongodb.github.io/node-mongodb-native/

首先需要安装官方的MongoDB包:

代码语言:txt复制
npm install mongodb --save

然后连接数据库并进行操作,例如查询所有数据:

代码语言:javascript复制
const MongoClient = require('mongodb').MongoClient;

const uri = 'mongodb://localhost:27017/test';

MongoClient.connect(uri, (err, client) => {
  const collection = client.db("test").collection("users");
  collection.find({}).toArray((err, docs) => {
    console.log(docs);
    client.close();
  });
});

使用第三方包mongoose来操作MongoDB数据库

官方文档:https://mongoosejs.com/

首先需要安装mongoose包:

代码语言:txt复制
npm install mongoose --save

然后连接数据库并进行操作,例如创建表:

代码语言:javascript复制
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });

const userSchema = new mongoose.Schema({
  username: { type: String, required: true },
  password: { type: String, required: true },
  email: String
});

const User = mongoose.model('User', userSchema);

添加数据(增)

代码语言:javascript复制
const user = new User({
  username: 'admin',
  password: '123456',
  email: 'xiaochen@qq.com'
});

user.save((err, ret) => {
  if (err) {
    console.log('保存失败');
  } else {
    console.log('保存成功');
    console.log(ret);
  }
});

删除(删)

根据条件删除所有:

代码语言:javascript复制
User.remove({ username: 'xiaoxiao' }, (err, ret) => {
  if (err) {
    console.log('删除失败');
  } else {
    console.log('删除成功');
    console.log(ret);
  }
});

根据条件删除一个:

代码语言:javascript复制
User.findOneAndRemove(conditions,[options],[callback]);

根据id删除一个:

代码语言:javascript复制
User.findByIdAndRemove(id,[options],[callback]);

更新(改)

更新所有:

代码语言:javascript复制
User.remove(conditions,doc,[options],[callback]);

根据指定条件更新一个:

代码语言:javascript复制
User.FindOneAndUpdate([conditions],[update],[options],[callback]);

根据id更新一个:

代码语言:javascript复制
User.findByIdAndUpdate('5e6c5264fada77438c45dfcd', { username: 'junjun' }, (err, ret) => {
  if (err) {
    console.log('更新失败');
  } else {
    console.log('更新成功');
  }
});

查询(查)

查询所有:

代码语言:javascript复制
User.find((err,ret) => {
  if (err) {
    console.log('查询失败');
  } else {
    console.log(ret);
  }
});

条件查询所有:

代码语言:javascript复制
User.find({ username: 'xiaoxiao' }, (err,ret) => {
  if (err) {
    console.log('查询失败');
  } else {
    console.log(ret);
  }
});
删除(删)

删除所有匹配条件的文档:

代码语言:javascript复制
Model.deleteMany(filter, options, callback);

删除第一个匹配条件的文档:

代码语言:javascript复制
Model.findOneAndDelete(filter, options, callback);

根据 id 删除文档:

代码语言:javascript复制
Model.findByIdAndDelete(id, options, callback);
更新(改)

更新所有匹配条件的文档:

代码语言:javascript复制
Model.updateMany(filter, update, options, callback);

更新第一个匹配条件的文档:

代码语言:javascript复制
Model.updateOne(filter, update, options, callback);

根据 id 更新文档:

代码语言:javascript复制
Model.findByIdAndUpdate(id, update, options, callback);
查询(查)

查询所有文档:

代码语言:javascript复制
Model.find(filter, projection, options, callback);

查询第一个匹配条件的文档:

代码语言:javascript复制
Model.findOne(filter, projection, options, callback);

根据 id 查询文档:

代码语言:javascript复制
Model.findById(id, projection, options, callback);

其中,filter 表示查询条件,update 表示更新操作,projection 表示指定返回的字段,options 表示查询选项,callback 表示回调函数。

在进行增删改查操作时,通常都需要连接 MongoDB 数据库。在 Node.js 中,可以使用官方的 mongodb 包或者第三方的 mongoose 包来操作 MongoDB 数据库。

使用官方的 mongodb 包来操作 MongoDB 数据库

官方的 mongodb 包提供了许多方法来操作 MongoDB 数据库,例如:连接数据库、创建集合、插入文档、查询文档、更新文档、删除文档等。以下是一个使用 mongodb 包进行增删改查操作的例子:

代码语言:javascript复制
const MongoClient = require('mongodb').MongoClient;
const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

// 连接数据库
client.connect(err => {
  if (err) {
    console.log('连接数据库失败:', err);
    return;
  }
  console.log('成功连接数据库');

  const db = client.db('test');
  const collection = db.collection('users');

  // 插入文档
  const insertDocuments = function(callback) {
    const user = { name: 'user1', age: 20 };
    collection.insertOne(user, function(err, result) {
      if (err) {
        console.log('插入文档失败:', err);
        return;
      }
      console.log('成功插入文档:', result.ops);
      callback(result);
    });
  };

  // 查询文档
  const findDocuments = function(callback) {
    collection.find({}).toArray(function(err, docs) {
      if (err) {
        console.log('查询文档失败:', err);
        return;
      }
      console.log('成功查询文档:', docs);
      callback(docs);
    });
  };

  // 更新文档
  const updateDocument = function(callback) {
    collection.updateOne({ name: 'user1' }, { $set: { age: 21 } }, function(err, result) {
      if (err) {
        console.log('更新文档

总结

在 Node.js 中操作 MongoDB 数据库可以使用官方的 mongodb 包或第三方的 mongoose 包。mongoose 包对 mongodb 进行了二次封装,可以更加方便地操作 MongoDB 数据库。

在使用 mongoose 操作 MongoDB 数据库时,一般的步骤是:设计 Schema(模式)、发布 Model(模型)、增删改查数据。其中,Schema 表示集合(表)的结构,Model 表示集合(表)的构造函数,可以通过 Model 对集合(表)进行增删改查数据的操作。

设计 Schema 时需要指定集合(表)中每个字段的数据类型和约束条件,例如字段类型可以是 String、Number、Date、Boolean 等,约束条件可以是 required(必填项)、unique(唯一性)等。发布 Model 时,需要将 Schema 传入 mongoose.model() 方法中,生成集合(表)的构造函数。

增删改查数据时,可以通过构造函数生成文档对象,然后对文档对象进行操作,例如 save() 方法保存数据、remove() 方法删除数据、findOneAndUpdate() 方法更新数据等。在查询数据时,可以通过 Model 对象进行查询,例如 find() 方法查询所有数据、findOne() 方法查询单个数据等。

思考

在学习如何在Node.js中操作MongoDB数据库时,我们需要了解MongoDB数据库的基本概念和相关操作,例如集合、文档、Schema等。在Node.js中,我们可以使用MongoDB官方提供的mongodb包来操作数据库,也可以使用第三方包mongoosemongoosemongodb进行了二次封装,使用起来更加方便。在使用mongoose时,我们需要先设计Schema,然后将其发布为Model,最后使用Model来对数据库进行增删改查等操作。

同时,使用MongoDB数据库需要注意的是,我们需要在Node.js中使用mongoose.connect或者mongodb.MongoClient.connect方法来连接数据库,然后才能对数据库进行操作。另外,在对数据库进行操作时,需要注意数据的完整性和统一性,可以使用mongoose提供的数据约束来实现。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞