专栏首页张培跃Node.js封装对mongodb操作的模块

Node.js封装对mongodb操作的模块

张培跃

ID:laozhangsishu

不止于前

关注

增删改查:

var mongodb=require("mongodb");
var MongoClient=mongodb.MongoClient;
var connStr="mongodb://127.0.0.1:27017/";
//连接数据库
function _connect(cb){
    MongoClient.connect(connStr,function(err,client){
        if(err){
            console.log("失败");
        }else{
            //指定数据库的名字"bang"
            var db=client.db("bang");
            cb(db);
        }
    })
}
/***********************插入*******************************/
//插入一条记录
module.exports.insertOne=function(collection,obj,cb){
    _connect(function(db){
        db.collection(collection).insertOne(obj,function(err,results){
            cb(err,results);
        })
    })
}
//插入多条记录
/*
* collection:插入的集合,
* arr:插入的文档
* cb:回调函数。通过该函数返回执行的结果*/
module.exports.insertMany=function(collection,arr,cb){
    _connect(function(db){
        db.collection(collection).insertMany(arr,function(err,results){
            cb(err,results);
        })
    })
}
/*********************查找**********************************/
//根据条件查找记录数
module.exports.count=function(collection,whereObj,cb){
    _connect(function(db){
        db.collection(collection).count(whereObj).then(function(count){
            cb(count);
        })
    })

}
/*查找
* collection:集合
* obj:
*   whereObj:条件,默认是{}
*   sortObj:排序,默认是{}
*   limit:显示提定条数,默认是0
*   skip:跳过指定条数,默认是0*/
module.exports.find=function(collection,obj,cb){
    //如果有条件,将条件赋值给obj.whereObj,没有传条件默认为{}
    obj.whereObj=obj.whereObj||{};
    obj.sortObj=obj.sortObj||{};
    obj.limit=obj.limit||0;
    obj.skip=obj.skip||0;
    _connect(function(db){
        db.collection(collection)
            .find(obj.whereObj)
            .sort(obj.sortObj)
            .limit(obj.limit)
            .skip(obj.skip)
            .toArray(function(err,results){
            cb(err,results);
        })
    })
}
/*
* 查找一条记录*/
module.exports.findOne=function(collection,whereObj,cb){
    _connect(function(db) {
        db.collection(collection).findOne(obj, function (err, results) {
            cb(err, results);
        });
    });
}
//根据ID来查找记录
module.exports.findOneById=function(collection,id,cb){
    _connect(function(db) {
        db.collection(collection).findOne({_id: mongodb.ObjectId(id)}, function (err, results) {
            cb(err, results);
        });
    });
}
/*********************修改******************************************/
//根据ID修改一条记录
module.exports.updateOneById=function(collection,id,upObj,cb){
    _connect(function(db) {
        db.collection(collection).updateOne({_id:mongodb.ObjectId(id)}, upObj, function (err, results) {
            cb(err, results);
        })
    });
}
//修改一条记录
module.exports.updateOne=function(collection,whereObj,upObj,cb){
    _connect(function(db) {
        db.collection(collection).updateOne(whereObj, upObj, function (err, results) {
            cb(err, results);
        })
    });
}
//修改多条记录
module.exports.updateMany=function(collection,whereObj,upObj,cb){
    db.collection(collection).updateMany(whereObj,upObj,function(err,results){
        cb(err,results);
    })
}
/**********************删除**************************************/
//根据ID来删除一条记录
module.exports.deleteOneById=function(collection,id,cb){
    _connect(function(db) {
        db.collection(collection).deleteOne({_id: mongodb.ObjectId(id)}, function (err, results) {
            cb(err, results);
        })
    });
}
//删除一条记录
module.exports.deleteOne=function(collection,whereObj,cb){
    _connect(function(db) {
        db.collection(collection).deleteOne(whereObj, function (err, results) {
            cb(err, results);
        })
    });
}
//删除多条记录
module.exports.deleteMany=function(collection,whereObj,cb){
    _connect(function(db) {
        db.collection(collection).deleteMany(whereObj, function (err, results) {
            cb(err, results);
        })
    });
}

本文分享自微信公众号 - 张培跃(zhangpeiyue8),作者:张培跃

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Golang 对MongoDB的操作简单封装

    每一次操作都copy一份 Session,避免每次创建Session,导致连接数量超过设置的最大值 获取文档对象c := Session.DB(db).C(c...

    程序员同行者
  • 2020年,你应该知道 23 个非常有用的 NodeJs 库

    作为专业的开发人员,我们必须不断更新最新和最好的库,因为知道好的库,那么开发过程就可以依赖于它们,这会节省我们很多时间也有助于构建高质量的软件。

    前端小智@大迁世界
  • Meteor平台下网站开发只需数小时?

    前阶段看到一篇文章,说以往花费数周时间才能完成的网站,现在使用 Meteor 只需要几小时 很好奇Meteor是个什么技术?怎么大幅提高开发效率的?就了解并试用...

    dys
  • Koa与常用中间件的使用

    Node.js 是一个异步的世界,官方 API 支持的都是 callback 形式的异步编程模型,这会带来许多问题,例如callback 的嵌套问题 ,以及异步...

    越陌度阡
  • 玩转服务器---运行环境搭建

    前面两篇文章,讲到了云服务的选购,以及域名的注册备案,那么我们项目上线的准备工作其实已经完成一半了。下一步其实就是在服务器上搭建我们的运行环境了。每个人的项目...

    创译科技
  • Nodejs学习路线图

    Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的w...

    前朝楚水
  • mongodb原生node驱动

    写在前面 最近读《node.js学习指南》,对于mongodb没有介绍太多的工作原理,但是对于一个前端开发者,即使你还没有用过这种数据库也可以让你很好的理解和使...

    okaychen
  • Github 4 万 Star!最全面的 Node.js 资源汇总推荐

    【导读】:Node.js 是一个开源、跨平台的,用于编写服务器和命令行的 JavaScript 运行时工具。

    五月君
  • nodejs入门

    (附实例一篇)https://coding.net/u/oTToTT/p... 阅读本文需要js基础 1.介绍 1.1.什么是 node 1.1.1.node ...

    random_wang
  • NodeJS+Express+MongoDB

    一、MongoDB MongoDB是开源,高性能的NoSQL数据库;支持索引、集群、复制和故障转移、各种语言的驱动程序丰富;高伸缩性; MongoDB 是一个基...

    张果
  • Node.js 入门你需要知道的 10 个问题

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它是一个开源和跨平台的服务端应用程序。任何人都可以编写 JavaScri...

    用户1462769
  • 你想知道的 NPM 包管理器讲解

    包管理器又称软件包管理系统,它是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。对于我们业务开发也很受益,...

    coder_koala
  • Node.js 包管理器 NPM 讲解

    包管理器又称软件包管理系统,它是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。对于我们业务开发也很受益,...

    五月君
  • Express结合Socket.io实现智能回复机器人

    之前写了一篇 《Node.js中运用socket.io实现智能回复机器人与聊天室功能》 发现浏览的人还挺多,不过这篇博客只是讲解了一些实现原理,现在运用Node...

    越陌度阡
  • 从项目中由浅入深的学习koa 、mongodb(4)

    从项目中由浅入深的学习vue,微信小程序和快应用 (1) 从项目中由浅入深的学习react (2) 从项目中由浅入深的学习typescript (3)

    火狼1
  • Node.js 入门你需要知道的 10 个问题

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它是一个开源和跨平台的服务端应用程序。任何人都可以编写 JavaScri...

    五月君
  • 《从零开始做一个MEAN全栈项目》(1)

    欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览。 ...

    mukekeheart
  • 持久化储存(二)

    下载地址:https://www.mongodb.com/download-center#community

    一粒小麦
  • 数据库概述及环境搭建

    http://www.czxy.com/article?id=1 http://www.czxy.com/article?id=2

    梨涡浅笑

扫码关注云+社区

领取腾讯云代金券