安装
下载地址:https://www.mongodb.org/downloads#production
?选择要下载的版本下载。
?
在/opt目录下创建mongodb文件夹
? ? mkdir /opt/mongodb
在mongodb我文件下分别创建data,logs目录
? ? cd /opt/mongodb
? ? mkdir data
? ? mkdir logs
添加mongodb用户,用户组
? ? groupadd mongodb
? ? useradd mongodb -g mongodb
修改mongodb文件夹所有者
? ? chown -R mongodb:mongodb /opt/mongodb
将安装包复制到/opt/mongodb下解压
? ??tar zxvf mongodb-linux-i686-3.2.1.tgz
配置/etc/profile文件,在最后添加:
? ??
?
使修改生效
? ? source /etc/profile
?添加CentOS开机启动项?
? ? ?vi + /etc/rc.d/rc.local
? ? 最后一行添加:mongod --dbpath=/opt/mongodb/data --logpath /opt/mongodb/logs/log.log -fork --rest
启动:
? ? mongod --dbpath=/opt/mongodb/data --logpath /opt/mongodb/logs/log.log -fork --rest
? ? 如果是32bitos可能会报错,修改数据库引擎启动:
? ? mongod --storageEngine=mmapv1 --dbpath=/opt/mongodb/data --logpath /opt/mongodb/logs/log.log - fork --rest
连接:
? ? mongo localhost:27017
关闭:
? ? 数据库模式下:use admin,执行db.shutdownServer()即可
非正常关闭无法启动:
? ? 删除%MONGODB_HOME%/db下的.lock文件
? ? 输入命令 mongod --repair
? ? 重启mongoDB
?
?基本操作
?
?与传统数据库概念对比:
?
数据类型:
?
?
show dbs ? #查看所有数据库
db ? ? ? ? ? ? ? ?#显示当前数据库对象或集合。
use ? ? ? ? ? ? ? ?#可以连接到一个指定的数据库。(没有自动创建)
db.dropDatabase() ? #删除数据库
隐式创建集合:
?
? ? db.s1.insert({name:"smallbug",age:"23"})
显示创建
?
? ? db.createCollection("c2")
插入1000条数据:
? ? ? ? ? ?for(var i=0; i<1000; i++){ db.s1.save({name:"smallbug_"+i,age:i}) }
? ? 或者
?
? ? ? ? ? ?for(var i=0; i<1000; i++){ db.s1.insert({name:"smallbug_"+i,age:i}) }
db.s2.count() ? ?#查看document数量
db.s2.find() ? ? ? #查询记录
db.s2.find().skip(30).limit(10) ? ? ? ? ? #分页
?
更新:
db.s1.update(
? ?{name:‘smallbug_100‘}, ? ?#查询条件
? ?{$set:{name:‘xiaoming‘}}, #设置值
? ?{
? ? ?upsert: false, ? ? ? ? ?#默认false,如果不存在记录不插入
? ? ?multi: true ? ? ? ? ? ? #是否修改多行,默认false修改最前面的一行
? ?}
)
pretty() ? ? #格式化输出
db.s2.remove({age:56}) ? ?#删除
查询age大于995并且name为smallbug_997或smallbug_101:
?db.s1.find({
age:{$gt:995},
$or:[
{name:‘smallbug_101‘},
{name:‘smallbug_997‘}
]
})
降序查询:
? ? db.s1.find({age:{$gt:990}}).sort({age:-1}) ? ? #1为升序,默认是升序
创建索引:
? ? db.s1.ensureIndex({age:1})
创建唯一索引:
? ? db.s1.ensureIndex({age:1},{unique:true})
查询索引:
? ??db.system.indexes.find()
删除索引:
? ??db.s1.dropIndex({age:1})
?
聚合函数:根据name字段分组,求age总和
db.s2.aggregate(
[
{
$group : {_id : "$name", num_tutorial : {$sum : ‘$age‘}}
}
]
)
?管道:
?先选出age在500到600之间然后根据name字段分组,求age平均值:
db.s2.aggregate(
[
{$match : {age : {$gt : 500, $lt : 600}}},
{$group : {_id : "$name", num_tutorial : {$avg : ‘$age‘}}}
]
)
age集合中必须有2,3,4,5,缺一不可
? ? db.s2.find({age:{$all:[2,3,4,5]}})
age集合中只要有2,3,4,5其中一个就好
? ???db.s2.find({age:{$in:[2,3,4,5]}})
另外$nin与$in相反
?
?explain() ? #打印查询计划
?导出数据:
??mongodump -h localhost:27017 -d its -o /home/mysql01/Public/
恢复数据:
? ??mongorestore -h localhost:27017 -d its --dir=/home/mysql01/Public/its
导出数据:
? ??mongoexport -h localhost:27017 -d its -c s1 -o /home/mysql01/Public/a.txt
导入数据
? ??mongoimport -h localhost:27017 -d its -c s1 /home/mysql01/Public/a.txt
原文:http://smallbug-vip.iteye.com/blog/2276181