MongoDB与NodeJS

一.Linux下安装mongodb

1.下载安装包

wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz

下载完成后解压缩压缩包

tar zxf mongodb-linux-i686-1.8.2.tgz

2.安装准备
将mongodb移动到/usr/local/server/mongdb文件夹

mv mongodb-linux-i686-1.8.2 /usr/local/mongodb

当然可以给解压后的mongodb文件重命名:

mv   所下载的mongodb文件名(这里是:mongodb-linux-i686-1.8.2.tgz)   ./mogodb

创建数据库文件夹与日志文件

mkdir /usr/local/mongodb/data_db
touch /usr/local/mongodb/logs_db

3.设置开机自启动
将mongodb启动项目追加入rc.local保证mongodb在服务器开机时启动

echo "/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data –logpath=/usr/local/server/mongodb/logs –logappend  --auth –port=27017" >> /etc/rc.local

4.启动mongodb
cd到mongodb目录下的bin文件夹启动mongodb

cd bin/
./mongodb --dbpath=../data_db

//下面这个是需要权限的登录方式, 用户连接需要用户名和密码

/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend  --auth  --port=27017 --fork

//这个是不需要密码的

/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend  --port=27017 --fork

5.参数解释: –dbpath 数据库路径(数据文件)
–logpath 日志文件路径
–master 指定为主机器
–slave 指定为从机器
–source 指定主机器的IP地址
–pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
–logappend 日志文件末尾添加
–port 启用端口号
–fork 在后台运行
–only 指定只复制哪一个数据库
–slavedelay 指从复制检测的时间间隔
–auth 是否需要验证权限登录(用户名和密码)

-h [ –help ] show this usage information
–version show version information
-f [ –config ] arg configuration file specifying additional options
–port arg specify port number
–bind_ip arg local ip address to bind listener - all local ips
bound by default
-v [ –verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
–dbpath arg (=/data/db/) directory for datafiles 指定数据存放目录
–quiet quieter output 静默模式
–logpath arg file to send all output to instead of stdout 指定日志存放目录
–logappend appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件
–fork fork server process 以创建子进程的方式运行
–cpu periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况
–noauth run without security 无认证模式运行
–auth run with security 认证模式运行
–objcheck inspect client data for validity on receipt 检查客户端输入数据的有效性检查
–quota enable db quota management 开始数据库配额的管理
–quotaFiles arg number of files allower per db, requires –quota 规定每个数据库允许的文件数
–appsrvpath arg root directory for the babble app server
–nocursors diagnostic/debugging option 调试诊断选项
–nohints ignore query hints 忽略查询命中率
–nohttpinterface disable http interface 关闭http接口,默认是28017
–noscripting disable scripting engine 关闭脚本引擎
–noprealloc disable data file preallocation 关闭数据库文件大小预分配
–smallfiles use a smaller default file size 使用较小的默认文件大小
–nssize arg (=16) .ns file size (in MB) for new databases 新数据库ns文件的默认大小
–diaglog arg 0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
–sysinfo print some diagnostic system information 打印系统诊断信息
–upgrade upgrade db if needed 如果需要就更新数据库
–repair run repair on all dbs 修复所有的数据库
–notablescan do not allow table scans 不运行表扫描
–syncdelay arg (=60) seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s

Replication options:
–master master mode 主复制模式
–slave slave mode 从复制模式
–source arg when slave: specify master as 当为从时,指定主的地址和端口
–only arg when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
–pairwith arg address of server to pair with
–arbiter arg address of arbiter server 仲裁服务器,在主主中和pair中用到
–autoresync automatically resync if slave data is stale 自动同步从的数据
–oplogSize arg size limit (in MB) for op log 指定操作日志的大小
–opIdMem arg size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小

Sharding options:
–configsvr declare this is a config db of a cluster 指定shard中的配置服务器
–shardsvr declare this is a shard db of a cluster 指定shard服务器

6.进入数据库的CLI管理界面
cd到mongodb目录下的bin文件夹,执行命令./mongo
运行如下:
[root@namenode mongodb]# ./bin/mongo
MongoDB shell version: 1.8.2
connecting to: test

use test;
switched to db test

若数据库出现如不能连上,则是一个data目录下的mongod.lock文件的问题,可以用如下的修复的命令, mongod –repair

二.NodeJS的安装以及mongoose的安装

1.nodejs的下载地址:
http://node.js.cn/download

2.nodejs安装完成之后,使用npm install mongoose

三.Nodejs操作MongoDB

  1. 连接数据库
//引入模块
var mongoose = require('mongoose');

//直接连接
var db=mongoose.connect('mongodb://localhost/xiaoif');

//方法二:使用createConnection连接
//创建连接并选择数据库
var mongodb = mongoose.createConnect('mongodb://localhost/xiaoif');

//虽然mongodb是一个无模式的数据库,但在项目中依然要对他的数据结构进行约束,一般使用Schema进行约束,设置数据结构
var usersSchema = new mongoose.Schema({
    name:{type:String,default:'haha'},
    age:{type:Number,min:18,index:true},
    sex:{type:String}
});

//导入mongoose的model,选择一个集合
var Users = mongoose.model('users',usersSchema);

2.插入操作

//定义变量
var user ={
    name:"xiaoif",
    age:18,
    sex:'男'
};

//实例化model
var users = new Users(user);

//进行插入操作,调用回调函数
users.save(function(err){
    if(err){
        return console.log(err);
    }else{
        console.log('save data is ok!');
    }
    //关闭数据库
    mongodb.close();
});

3.查询操作

//创建查询条件
var content = {name:'xiaoif'};

//查询字段
var filed = {name:1,age:1};

//查询操作
Users.find(content,filed,function(err,datas){
    if(err){
        return console.log(err);
    }else{
        console.log(datas);
    }
    //关闭数据库
    mongodb.close();
});

4.更新操作

//修改条件
var con = {name:'hehe'};

//修改内容
var content = {$set:{age:20}};
Users.update(con,content,function(err){
    if(err){
        return console.log(err);
    }else{
        console.log('update is ok!');
    }
    //关闭数据库
    mongodb.close();
});

5.删除操作

//条件
var con = {_id:"20fjs0fi0fj0sf"};
Users.remove(con,function(err){
    if(err){
        return console.log(err);
    }else{
        console.log('delete is ok!');
    }
    //关闭数据库
    mongodb.close();
});

demo:在一个服务当中连接两个不同的表

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var schema1 = new Schema({ name: String });
var schema2 = new Schema({ num: Number});
var conn1 = mongoose.createConnection("mongodb://localhost/A表");
var conn2 = mongoose.createConnection("mongodb://localhost/B表");
var model1 = conn1.model('model1',schema1);
var model2 = conn2.model('model2',schema2);

var assert = require('assert');
var doc1=new model1({name:'doc1'});
doc1.save(function(err){
  assert.equal(null,err);
});
var doc2=new model2({num:2});
doc2.save(function(err){
  assert.equal(null,err);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值