Centos7,win安装mongodb
一:下载地址:
https://www.mongodb.com/download-center#community
选择合适的版本
二:安装配置
1:解压
# tar -xvf mongodb-linux-x86_64-rhel70-4.0.0.tgz2:移动文件到特定的目录,这里我放在/usr/local 下
# mv mongodb-linux-x86_64-rhel70-4.0.0/ /usr/local/mongodb3:创建数据文件存放目录和日志目录
cd /usr/local/mongodb mkdir -p data/db #数据存放目录 mkdir logs #日志目录4:修改配置文件
进入/usr/local/mongodb/bin目录
新建配置文件:mongodb.conf
dbpath = /usr/local/mongodb/data/db #数据文件存放目录 logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录 port = 27017 #端口 fork = true #以守护程序的方式启用,即在后台运行 auth=true #安全认证,加此字段需要为数据库设置密码才能访问 bind_ip=0.0.0.0 #限制只允许某一特定IP来访问,这里不限制5:启动:
/usr/local/mongodb/bin/mongod -f mongodb.conf6:启动后进入mongodb控制台
/usr/local/mongodb/bin/mongo
输入一个命令试试,查看版本:
db.version();
关闭:pkill mongod 或者killall mongod
7:为了方便管理可以加入环境变量,打开/etc/profile
export MONGODB_PATH=/usr/local/mongodb/bin export PATH=$PATH:$MONGODB_PATH
三:设置密码
如果配置文件加了,auth=true,或者是启动的时候带了这个参数,那么必须要设置密码,然后验证通过才可以操作
首先进入控制台,输入命令查看一下
show dbs #查看有多少个数据库如果没有验证,这里会报错,高版本也可能什么都不显示
1:设置密码
进入控制台后输入命令:
use admin #切换到默认的admin数据库设置:
db.addUser("root","123") #首先设置超级管理员,密码 #2.4以及以上版本,用下面这个命令 db.createUser({user:"root",pwd:"123",roles:[{ role: "root", db: "admin" } ]})完成后界面:
2:进入控制台验证
use admin db.auth("root","123")验证通过显示true 1
再试试命令:show dbs
可以看到这里有三个数据库
二:win安装方法
1:解压文件,我这里解压到D:\mongodb
2:在D:\mongodb新建data目录,即:D:\mongodb\data
3:在data下新建三个个目录:D:\mongodb\data\db D:\mongodb\data\log D:\mongodb\data\log\log.txt
4:启动:MongoDB默认的数据目录为:C:\data\db。如果不用默认目录,则需要在在mongod.exe命令后加--dbpath参数。
我这里是:D:\mongodb\bin\mongod --dbpath=D:\mongodb\data\db --logpath=D:\mongodb\data\log\log.txt
(--logpath 参数是设定日志文件的路径。--dbpath 参数是设定数据库文件的存放路径。)
5:作为服务进行安装,执行命令安装:
D:\mongodb\bin\mongod --install --dbpath=D:\mongodb\data\db --logpath=D:\mongodb\data\log\log.txt --auth(--auth验证模式需要密码 --fork后台)6:启动
net start mongodb 启动服务 net stop mongodb 停止服务
三:PHP链接mongodb
$connection = new Mongo('mongodb://192.168.0.101:27017'); //如果有用户名密码: $connection = new Mongo('mongodb://root:123@192.168.0.101:27017/test'); //指定test数据库,也可以不写
如果是PHP7
new MongoDB\Driver\Manager('mongodb://root:123@10.10.10.104:27017/');PHP7不能使用以前的mongo扩展,必须使用mongodb,即:PECL上的mongo已经毁弃,mongo最高支持php5.9
php7的pecl下载地址:https://pecl.php.net/package/mongodb
因为PHP7的mongodb扩展的API写起来太麻烦,开发效率可能不太高。mongodb官网开发了一个PHP库,使用这个库可以兼容mongo写法。也可以用下面这个库代替pecl的mongodb
地址:https://github.com/mongodb/mongo-php-library
四:使用:
1:基本命令:
show dbs 查看有多少个数据库
db 查询当前数据库
show tables;或者 show collections;查询当前数据库有多少个集合。
db.c1.drop() 删除c1集合
db.dropDatabase() 删除数据库
db.createCollection("c1") 创建 c1集合
db.createCollection("c1",{capped:true,size:10000000,max:5}) 创建 c1固定集合,大小10M,如果容量不到10M,超过5条,自动增减
db.c1.stats() 查看c1集合信息
3:增删改查
db.c1.insert({name:"li"}) 往c1集合里增加一条记录
db.c1.save 同上,但是如果ID相同则是更新,不同则是增加
db.c1.find() 查看c1里的所有记录
db.c1.find({name:"123"})查询 name=123的所有记录
db.c1.find({name:"123"},{name:1}) 查询 name=123的所有记录 显示字段只要name。 1为显示,0为不显示
db.c1.find({"name":{$gt:5}}) 查询name>5的 $gt:>;$ne:! =;$gte>=;$lte=<;$lt<
db.c1.find({"name":{$gt:5,$lt:10}})大于5小于10
db.c1.count()或者 db.c1.find().count() 统计
db.c1.find().sort({name:1})根据name 排序,1是升序,-1是降序
db.c1.find().limit(3)取3个
db.c1.find().skip(1).limit(3)相当于mysql中limit(1,3)skip跳过一个。
db.c1.find().sort({name:1}).skip(1).limit(3).count(1):如果count里面没有参数,或者是0的时候,前面的条件自动忽略。
db.c1.find({name:{$exists:1}}) exosts:判断字段name是否为真(存在)
db.c1.find({name:{$in:[1,2,3]}}) 类似于mysql in,查询name为1,2,3
db.c1.find({$or:[{name:"1"},{name:"2"}]}) 查询name=1 或者 name=2 如果是$nor则是过滤掉这些。
实例:db.collection.update(ceiteria,objNew,upsert,multi) upsert 真为如果条件没有新加一条,multi 为真更新多条,默认为0,0一般为0,1
db.c1.update({name:"li"},{$set:{name:"lic"}},0,1) 或者 db.c1.update({name:"li"},{$set:{name:"lic"}},{upsert:false,multi:true})把li改成lic
db.c1.remove() 删除c1集合 括号里面可以加条件。
4:管理篇:
db.c1.find({name:"li"}).explain() 获取查询请求的过程
db.c1.ensureIndex({name:1})给集合c1建立一个name索引,1为升序,-1降序,默认升序。
添加索引可能很费时间,后台执行需参数{background:true}
db.c1.ensureIndex({name:1},{unique:1})唯一索引
db.c1.getIndexKeys() 查看索引
db.c1.dropIndex({age:1})删除索引age
db.c1.isCapped()查看是否固定集合