2 Star 11 Fork 8

dony / 学习笔记

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mongodb在node中的使用.md 4.53 KB
一键复制 编辑 原始数据 按行查看 历史
dony 提交于 2021-08-26 14:28 . mongodb在node中的使用

MongoDB在Node中的使用

MongoDB是一个基于分布式文件存储的数据库,由c++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据库结构非常松散,是类型json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其他语法类似面向对象的查询语言,几乎可以实现类似关系数据库表单查询的绝大部分功能,而且还支持对数数据建立索引。

Node.js的MongoDB NPM模块是由MongoDB提供,其中包括数据库连接和一些基本操作。接下来将着重介绍Node.js的MongoDB驱动NPM模块。

安装驱动

node-mongodb-native是一个操作MongoDB的NPM模块。安装模块如下:

npm install node-mongodb-native

创建数据库连接

模块提供数据库的连接方法如下:

var MongoDB = require('mongodb'); //获取MongoDB模块
// 连接本地27017端口下的MongoDB服务器
var server = new mongodb.Server("127.0.0.1", 27017, {});

/* 创建数据库操作对象 */
var db = new mongodb.Db('test', server, {});
//创建数据库连接
db.open(function (error, client){
    //获取需要操作的表单句柄
    client.Collection('test_collection', function(err, collection){

    });
});

mongodb.Server对象接收三个参数,第一个为ip地址;第二个为端口号,端口号使用Number类型,使用字符串会出现异常;第三个为可选配置参数。db.open(function(error, client))类似于创建数据库连接。

通过client.Collection异步获取collection函数后,接下来应用collection表的句柄对象来操作表单的数据插入,查询,修改和删除操作的方法实现。

collection.insert

数据插入接口collection.insert(docs, options, [callback])如果需要执行回调函数时,在插入时需要设置option = {safe:true}。数据插入示例如下:

collection.insert({hello: 'world'}, {safe:true}, function(err, objects){
    if (err) console.warn(err.message);
    console.log(objects);
});

向数据库插入{hello: 'world'}的json对象数据,数据插入后执行回调函数,objects返回的是插入后的ObjectId。

collection.update

数据更新接口为collection.update(whereJson, newInfo, options, [callback]),whereJson为条件查询,newInfo为需要更新的数据,options和insert接口中的options作用一致。下面是一个update接口使用实例

collection.update({hi: "here"}, {$set: {hi: 'there'}}, {safe:true}, function(err){
    if (err) console.warn(err.message);
    else console.log('successfully updated');
});

collection.update的第一个参数是条件查询,第二个为update的数据,使用$set表示只更新hi这个key值的条件,不会修改其他数据,{safe:true}为options参数。

collection.remove

数据删除接口是collection.remove(whereJson, callback),whereJson为条件查询,callback带有一个参数,判断师傅删除成功。示例代码如下:

collection.remove({'id': mongoId}, function(err){
    if (err){
        console.log(err);
    }else {
        console.log('remove success');
    }
});

删除MongoDB中id为mongoId的数据,删除成功,输出'remove success',否则输出err信息

collection.find

数据查询接口是collection.find(query, [fields], options), query是查询条件,fields是需要返回的字段,其格式为{field: -1, field2: 1}, 1为需要返回的字段, -1为不需要返回的字段,options和insert,update中的options作用一致,find方法类似于一个工厂对象创建的方法,通过find方法创建返回一个Cursor对象,该对象还可以附加查询条件,例如sort、limit、nextObject、each和toArray等。示例代码如下:

var sursor = collection.find(query, [fields], options);
//设置数据库查询时sort排序以及数量限制
cursor.sort(fields).limit(n).skip(m)

cursor.nextObject(function(err,doc){});
//获取查询结果
cursor.each(function(err, doc){});
//将结果转化为数组
cursor.toArray(function(err, docs){});

cursor.rewind() // reset the cursor to its initial state

collection.find方法创建并返回cursor对象,之后调用其sort、limit和skip等方法,通过nextObject、each和toArray方法来获取最后查询的数据,最后再将cursor对象重置为初始状态。

以上便是本节MongoD和MongoDB的NPM模块介绍。

1
https://gitee.com/dony1122/note.git
git@gitee.com:dony1122/note.git
dony1122
note
学习笔记
master

搜索帮助