道者编程

Centos7,win安装mongodb

一:下载地址:

https://www.mongodb.com/download-center#community

选择合适的版本

二:安装配置

1:解压

# tar -xvf mongodb-linux-x86_64-rhel70-4.0.0.tgz
2:移动文件到特定的目录,这里我放在/usr/local 下

# mv mongodb-linux-x86_64-rhel70-4.0.0/ /usr/local/mongodb
3:创建数据文件存放目录和日志目录

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.conf
6:启动后进入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()查看是否固定集合


最新评论:
我要评论:

看不清楚