详解Wondows下Node.js使用MongoDB的环境配置

前端之家收集整理的这篇文章主要介绍了详解Wondows下Node.js使用MongoDB的环境配置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

为了保存网站的用户数据和业务数据,通常需要一个数据库。MongoDB和Node.js特别般配,因为MongoDB是基于文档的非关系型数据库,文档是按BSON(JSON的轻量化二进制格式)存储的,增删改查等管理数据库的命令和JavaScript语法很像。如果你在Node.js里访问MongoDB的数据,会有我们是一家人的感觉,特别亲切。

我也准备使用MongoDB来作为我的数据库

MongoDB使用集合(collection)和文档(document)来描述和存储数据,collection就相当于表,document相当于行,不过MysqL之类的关系型数据库,表结构是固定的,比如某一行由若干列组成,行行都一样,而MongoDB不同,一个集合里的多个文档可以有不同的结构,更灵活一些。

@H_301_7@安装Mongo

详细指南在这里(MongoDB的官方文档):https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/。

到https://www.mongodb.org/downloads下载安装包,Windows系统是msi文件,我选择的是“Windows 64-bit 2008 R2+”这个版本。

安装非常简单,你可以默认,也可以选择安装位置,我装到了G盘MongoDB目录下。安装完后,目录结构是这样的:G:\MongoDB\Server\3.0\。

mongod、mongo以及其它的工具,都在3.0目录下的bin目录。

@H_301_7@启动

要使用MongoDB,需要指定一个文件夹让它存放数据,我在G:\MongoDB下建立了一个名为db的文件夹。

打开cmd,进入G:\MongoDB\Server\3.0\bin目录,执行“mongod –dbpath=G:\MongoDB\db”,就会启动MongoDB,看到下面的图:

MongoDB启动后,会监听在一个端口上等待客户端来连接,从上图可以看出,默认监听的端口是27017。你可以“–port”选项改变这个端口,比如“mongod –port 28018 –dbpath=G:\MongoDB\db”命令就会启动MongoDB并监听28018端口。

启动了MongoDB,我们就可以使用mongo(交互式shell)来管理数据库了。直接在bin目录下执行mongo,就可以看到下图:

mongo Shell默认连接到了test数据库,还告诉我们可以输入help来查看帮助。你可以键入help并回车,看看都有哪些命令可用。

注意,mongod默认启动时不带鉴权,客户端连上后就可以随便操作,建库、增删改查等统统可以。你要想限制用户权限,可以自己配置下,我这里就直接往下走了。

@H_301_7@安装mongoose驱动

安装GIT工具: 由于github网站不支持直接下载打包了所有submodule的源码包,所以需要通过git工具来签出所有的源码。从http://code.google.com/p/msysgit/downloads/list,可以下载到msysgit这个Windows平台下的git客户端工具(最新版本文件为Git-1.7.7.1-preview20111027.exe)。在下载之后双击安装。

下载NPM源码: 打开命令行工具(CMD),执行以下命令,可以通过msysgit签出NPM的所有源码和依赖代码并安装npm。

在执行这段代码之前,请确保node.exe是跟通过node.msi的方式安装的,或者在PATH环境变量中。这段命令也会将npm加入到PATH环境变量中去,之后可以随处执行npm命令。如果安装中遇到权限方面的错误,请确保cmd命令行工具是通过管理员身份运行的。安装成功后,执行以下命令:

score

返回:

score@1.2.2 ./node_modules/underscore

如此,Windows平台下的NPM安装完毕,然后我们可以安装mongoose

@H_301_7@实例 一些基础的操作,说明都写在代码注释里了:

链接 var mongoose = require('mongoose'); var db = mongoose.createConnection('mongodb://127.0.0.1:27017/NodeJS'); // 链接错误 db.on('error',function(error) { console.log(error); }); // Schema 结构 var mongooseSchema = new mongoose.Schema({ username : {type : String,default : '匿名用户'},title : {type : String},content : {type : String},time : {type : Date,default: Date.now},age : {type : Number} }); // 添加 mongoose 实例方法 mongooseSchema.methods.findbyusername = function(username,callback) { return this.model('mongoose').find({username: username},callback); } // 添加 mongoose 静态方法,静态方法在Model层就能使用 mongooseSchema.statics.findbytitle = function(title,callback) { return this.model('mongoose').find({title: title},callback); } // model var mongooseModel = db.model('mongoose',mongooseSchema); // 增加记录 基于 entity 操作 var doc = {username : 'emtity_demo_username',title : 'emtity_demo_title',content : 'emtity_demo_content'}; var mongooseEntity = new mongooseModel(doc); mongooseEntity.save(function(error) { if(error) { console.log(error); } else { console.log('saved OK!'); } // 关闭数据库链接 db.close(); }); // 增加记录 基于model操作 var doc = {username : 'model_demo_username',title : 'model_demo_title',content : 'model_demo_content'}; mongooseModel.create(doc,function(error){ if(error) { console.log(error); } else { console.log('save ok'); } // 关闭数据库链接 db.close(); }); // 修改记录 mongooseModel.update(conditions,update,options,callback); var conditions = {username : 'model_demo_username'}; var update = {$set : {age : 27,title : 'model_demo_title_update'}}; var options = {upsert : true}; mongooseModel.update(conditions,function(error){ if(error) { console.log(error); } else { console.log('update ok!'); } //关闭数据库链接 db.close(); }); // 查询 // 基于实例方法查询 var mongooseEntity = new mongooseModel({}); mongooseEntity.findbyusername('model_demo_username',function(error,result){ if(error) { console.log(error); } else { console.log(result); } //关闭数据库链接 db.close(); }); // 基于静态方法查询 mongooseModel.findbytitle('emtity_demo_title',result){ if(error) { console.log(error); } else { console.log(result); } //关闭数据库链接 db.close(); }); // mongoose find var criteria = {title : 'emtity_demo_title'}; // 查询条件 var fields = {title : 1,content : 1,time : 1}; // 待返回的字段 var options = {}; mongooseModel.find(criteria,fields,result){ if(error) { console.log(error); } else { console.log(result); } //关闭数据库链接 db.close(); }); // 删除记录 var conditions = {username: 'emtity_demo_username'}; mongooseModel.remove(conditions,function(error){ if(error) { console.log(error); } else { console.log('delete ok!'); }

//关闭数据库链接
db.close();
});

原文链接:https://www.f2er.com/nodejs/49872.html

猜你在找的Node.js相关文章