Go MongoDB 增删改查的封装和使用示范

88 min read

MongoDB是一个非常流行的文档数据库,支持丰富的查询语言和高性能的插入、更新、删除操作。在实际开发中,我们通常需要对MongoDB进行封装,以方便操作和管理数据。本文将介绍如何使用Node.js对MongoDB进行封装和使用示范。

安装和连接MongoDB

首先,我们需要在本地或者服务器上安装MongoDB,并启动MongoDB服务。然后通过Node.js的驱动程序MongoDB Driver来连接MongoDB数据库。安装驱动程序:

npm install mongodb --save

连接数据库代码示例:

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

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'myproject';

// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  client.close();
});

以上代码连接上MongoDB服务器后,我们就可以进一步操作MongoDB。

封装 MongoDB 增删改查操作

MongoDB的增删改查操作非常灵活,但是我们需要对其进行一些封装,以方便我们更加快速、方便地操作MongoDB。下面给出MongoDB的增删改查4个方法的封装。

插入数据

在MongoDB中,插入数据非常简单。我们只需要调用collection的insertOne或者insertMany方法即可。下面给出插入一条数据的示例:

/**
 * 插入一条记录
 * @param collection 集合名称
 * @param obj 插入的文档对象
 * @param callback 插入成功后的回调函数
 */
exports.insertOne = function(collection, obj, callback) {
  const db = mongoUtil.getDb();
  db.collection(collection).insertOne(
    obj,
    function(err, result) {
      assert.equal(err, null);
      callback(result);
    }
  );
}

上面的代码中,我们首先获取了到了Collection对象,然后通过insertOne向集合中插入文档,并在回调函数中处理结果。insertMany方法使用方法和insertOne类似,只需要传入一个数组作为第二个参数即可。

更新数据

更新数据也非常简单,我们只需要指定要更新的文档的条件和更新内容即可。下面给出更新一条数据的示例:

/**
 * 更新一条记录
 * @param collection 集合名称
 * @param query 查询条件
 * @param obj 更新的文档对象
 * @param callback 更新成功后的回调函数
 */
exports.updateOne = function(collection, query, obj, callback) {
  const db = mongoUtil.getDb();
  db.collection(collection).updateOne(
    query,
    {$set: obj},
    function(err, result) {
      assert.equal(err, null);
      callback(result);
    }
  );
}

上面的代码中,我们首先获取Collection对象,然后通过updateOne方法更新满足查询条件的第一条记录,并在回调函数中处理结果。updateMany方法使用方法和updateOne类似,只需要传入query对象和{$set: obj}对象即可。

删除数据

删除数据也非常简单,我们只需要指定要删除的文档的条件即可。下面给出删除一条数据的示例:

/**
 * 删除一条记录
 * @param collection 集合名称
 * @param query 查询条件
 * @param callback 删除成功后的回调函数
 */
exports.deleteOne = function(collection, query, callback) {
  const db = mongoUtil.getDb();
  db.collection(collection).deleteOne(
    query,
    function(err, result) {
      assert.equal(err, null);
      callback(result);
    }
  );
}

上面的代码中,我们首先获取Collection对象,然后通过deleteOne方法删除满足查询条件的第一条记录,并在回调函数中处理结果。deleteMany方法使用方法和deleteOne类似,只需要传入一个query对象即可。

查询数据

查询数据也非常灵活,我们可以根据各种条件进行复杂的查询。下面给出查询一条数据的示例:

/**
 * 查询一条记录
 * @param collection 集合名称
 * @param query 查询条件
 * @param callback 查询成功后的回调函数
 */
exports.findOne = function(collection, query, callback) {
  const db = mongoUtil.getDb();
  db.collection(collection).findOne(
    query,
    function(err, result) {
      assert.equal(err, null);
      callback(result);
    }
  );
}

上面的代码中,我们首先获取Collection对象,然后通过findOne方法查询满足查询条件的第一条记录,并在回调函数中处理结果。find方法可以用来查询多条记录,类似于SQL语言中的select语句,具体使用方法可以参考MongoDB官方文档。

代码使用示例

上面的封装方法,我们可以在项目中直接使用。下面给出一个对数据库的增删改查使用示例:

const mongoUtil = require('./mongoUtil');

// 插入一条数据
mongoUtil.insertOne('user', {name: 'Tom', age: 20}, function(result) {
  console.log(result);
});

// 更新一条数据
mongoUtil.updateOne('user', {name: 'Tom'}, {age: 21}, function(result) {
  console.log(result);
});

// 删除一条数据
mongoUtil.deleteOne('user', {name: 'Tom'}, function(result) {
  console.log(result);
});

// 查询一条数据
mongoUtil.findOne('user', {name: 'Tom'}, function(result) {
  console.log(result);
});

上面的代码中,我们首先通过mongoUtil导入封装好的4个方法,然后分别进行了插入、更新、删除、查询一条记录的操作,并打印出结果。

总结

通过上面的示例,我们可以看到MongoDB的增删改查操作非常灵活,而且基本上就是常见的文档数据库操作。通过对MongoDB的封装,我们可以进一步简化代码,提高开发效率。