学习
实践
活动
专区
工具
TVP
写文章
专栏首页张培跃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);
        })
    });
}
文章分享自微信公众号:
张培跃

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:张培跃
原始发表时间:2018-07-22
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Golang 对MongoDB的操作简单封装

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

    程序员同行者
  • Librdkafka对Kafka Metadata的封装和操作

    int rd_kafka_metadata_cache_wait_change (rd_kafka_t *rk, int timeout_ms) { int ...

    扫帚的影子
  • Librdkafka对Kafka Message的封装和相关操作

    扫帚的影子
  • Android配置文件操作模块封装,全互联网最简单好用的封装

    Android中虽然提供了SharedPreference类方便的对配置文件进行操作。但是好用吗?

    杨永贞
  • Mongodb PHP封装API类,实现基本的插入/修改/查询/删除操作

    /* ============ 辅助操作接口API =============== */

    程序猿的栖息地
  • Node.js的fs&path模块的使用,获取文件的名称等操作

    倾盖
  • 大数据技术之_22_MongoDB学习_MongoDB 的简介、下载、安装、启动、配置和关闭 + MongoDB 的基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查

      • 数据库是按照数据结构来组织、存储和管理数据的仓库。   • 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。  ...

    黑泽君
  • 【图片简历】Vue.js在线简历编辑...(四-教育背景模块),node的express操作mongodb

    我不知道其它网上的那些人,他们哪来那么多时间,成天东跑西颠的。我这一天时间真的不太够用。 白天的时候要讲web前端零基础课,到下午3点半的时候要去接孩子下幼儿园...

    web前端教室
  • 2020年,你应该知道 23 个非常有用的 NodeJs 库

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

    前端小智@大迁世界
  • 【架构师(第三十七篇)】 服务端开发之后端框架与数据库技术选型

    express 是非常优秀的框架,koa2 比 express 更加简单,社区也很完善。

    一尾流莺
  • Meteor平台下网站开发只需数小时?

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

    dys
  • Nodejs学习路线图

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

    前朝楚水
  • 《从零开始做一个MEAN全栈项目》(1)

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

    mukekeheart
  • Python中对字节流/二进制流的操作:struct模块简易使用教程

    前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块。查了网上挺多教程都写的挺好的,...

    用户1332428
  • 2018年前端流行哪些技术?

    IT大咖说
  • 玩转服务器---运行环境搭建

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

    创译科技
  • mongodb原生node驱动

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

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

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

    五月君

作者介绍

用户1272076

北京千锋互联科技有限公司web前端高级讲师

北京千锋互联科技有限公司 · web前端高级讲师 (已认证)

专栏

精选专题

活动推荐

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券