【MongoDB】mongodb安装及经常使用操做命令

.......................................................................................
环境:centos7
Ip: 172.16.200.48
..............................................................................................javascript

1、Mongodb的安装与启动

一、mongo的安装

步骤 一、下载:

# cd /usr/local/src/
# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.3.tgz   
# tar -zxvf mongodb-linux-x86_64-rhel70-3.4.3.tgz

步骤 二、配置环境变量

# vim /etc/profile
添加一下内容:
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

步骤 三、查看mongodb版本信息 

# mongod -v

安装成功。java

二、mongo的启动

步骤 四、建立数据库目录(MongoDB须要自建数据库文件夹)

# mkdir -p /data/mongodb
# mkdir -p /data/mongodb/log
# touch /data/logs/mongodb/mongodb.log

步骤 五、添加配置文件

新建mongodb.conf配置文件, 经过这个配置文件进行启动.linux

# vim /etc/mongodb.conf
配置文件参数说明:
mongodb的参数说明:

--dbpath 数据库路径(数据文件)

--logpath 日志文件路径

--master 指定为主机器

--slave 指定为从机器

--source 指定主机器的IP地址

--pologSize 指定日志文件大小不超过64M.由于resync是很是操做量大且耗时,最好经过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。

--logappend 日志文件末尾添加

--port 启用端口号

--fork 在后台运行

--only 指定只复制哪个数据库

--slavedelay 指从复制检测的时间间隔

--auth 是否须要验证权限登陆(用户名和密码)
配置文件内容:
   dbpath=/data/mongodb
   logpath=/data/logs/mongodb/mongodb.log
   logappend=true
   port=27017
   fork=true
   ##auth = true # 先关闭, 建立好用户在启动

步骤 六、经过配置文件启动

# mongod -f /etc/mongodb.conf           ##启动

出现successfully表示启动成功了。
说明
MongoDB的启动:
不建议用service mongod start或者chkconfig mongod on来启动MongoDB,由于mongod每次启动须要带参数,否则会形成错误; 
建议用mongod命令来启动,先设置好配置文件/etc/mongod.conf后,每次手动用命令启动:mongod -f /etc/mongodb.conf
或者设置开机重启: echo “mongod –f /etc/mongod.conf” >>/etc/rc.d/rc.local
MongoDB的关闭
不建议使用强制关闭MongoDB: service mongod stop
推荐使用:从mongodb的admin中关闭mongodb

> use admin   
switched to db admin    
> db.shutdownServer()    
server should be down...

或者mongod --shutdown
使用shutdownServer关闭MongoDB,若有MongoDB主从服务器,则在服务关闭前同步主从服务器;强制关闭则不会;shell

步骤 七、进入mongodb的后台管理shell

# cd /usr/local/mongodb/bin
# ./mongo

步骤 八、建立数据库

> use test        建立数据库test

使用use DATABASE_NAME建立一个数据库。若是数据库不存在,则建立数据库,不然切换到指定数据库。数据库

2、Mongo中经常使用命令

[root@snails ~]# ps -ef|grep mongod
[root@snails ~]# mongo --host=127.0.0.1 --port=27017
MongoDB shell version: 3.2.7
connecting to: 127.0.0.1:27017/test
> show dbs  #显示数据库列表 
> show collections  #显示当前数据库中的集合(相似关系数据库中的表)
> show users  #显示用户
> use <db name>  #切换当前数据库,若是数据库不存在则建立数据库。 
> db.help()  #显示数据库操做命令,里面有不少的命令 
> db.foo.help()  #显示集合操做命令,一样有不少的命令,foo指的是当前数据库下,一个叫foo的集合,并不是真正意义上的命令 
> db.foo.find()  #对于当前数据库中的foo集合进行数据查找(因为没有条件,会列出全部数据) 
> db.foo.find( { a : 1 } )  #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
> db.dropDatabase()  #删除当前使用数据库
> db.cloneDatabase("127.0.0.1")   #将指定机器上的数据库的数据克隆到当前数据库
> db.copyDatabase("mydb", "temp", "127.0.0.1")  #将本机的mydb的数据复制到temp数据库中
> db.repairDatabase()  #修复当前数据库
> db.getName()  #查看当前使用的数据库,也能够直接用db
> db.stats()     #显示当前db状态
> db.version()   #当前db版本
> db.getMongo()  #查看当前db的连接机器地址
> db.serverStatus()  #查看数据库服务器的状态

3、Shell中的基本操做:增删改查

1. # mongo

启动mongodb数据库vim

2. > db

能够查看db当前指向哪一个数据库centos

3. 进入数据库 > use test;

使用use DATABASE_NAME使用use 数据库名就能够切换全局变量db当前指向的数据库。注意:use操做同时能够建立数据库,若是use+一个不存在的数据库名,则use执行后,MongoDB会建立对应数据库。数组

4. 查询数据库 > show dbs; (要显示数据库必须插入至少一条文档)

5. 删除数据库 > db.dropDatabase();

6.建立、删除集合

createCollection() 方法
db.createCollection(name, options)
在命令中, name 是要建立的集合的名称. Options 是一个文件,用于指定配置的集合
删除集合:drop() 方法
db.COLLECTION_NAME.drop() 是用来从数据库中删除一个集合服务器

#建立集合
#进入数据库mongos> use test;
mongos> db.createCollection("mycollection")
{ "ok" : 1 }
mongos> show collections;   #查看集合
mycollection

#删除集合
#进入数据库mongos> use testdb;
mongos> show collections;
mycollection
mongos> db.mycollection.drop();
true
mongos> show collections;

7. 插入文档

MongoDB使用insert()或save()方法向集合中插入文档,语法以下:

db.COLLECTION_NAME.insert(document)

插入文档

> use test
switched to db test
> db.col.insert({name:'morris',age:22})
WriteResult({ "nInserted" : 1 })

以上实例中col是集合名,若是该集合不在该数据库中,MongoDB会自动建立该集合并插入文档。
查看已插入的文档
> db.col.find()
{ "_id" : ObjectId("56e12c22de2a8692a3099065"), "name" : "morris", "age" : 22 }
在咱们插入文档的时候,若是咱们没有为该文档指定_id,mongodb将会为咱们的文档自动建立一个不会重复的ObjectId

有条件的查询已插入文档

db.[集合名].find( <query>, <projection> )
# > db.user.find({name:"user2"})  ##查询name为user2这条记录
# > db.user.find({name:"user2"},{age:1});  ## 查询name为user2这条记录的age字段

定义变量插入文档

> doc={name:'jack',age:20}
{ "name" : "jack", "age" : 20 }
> db.col.insert(doc)
WriteResult({ "nInserted" : 1 })
> db.col.find()
{ "_id" : ObjectId("56e12c22de2a8692a3099065"), "name" : "morris", "age" : 22 }
{ "_id" : ObjectId("56e12f49de2a8692a3099068"), "name" : "jack", "age" : 20 }
插入文档也可使用db.col.save(document)命令。若是不指定_id 字段save()方法相似于insert()方法。若是指定_id字段,则会更新该_id的数据。

插入多个文档

若是咱们在insert中传入了多个文档,mongodb只会插入第一个文档,下面的代码中只插入了第一个文档。
> db.user.find()
> db.user.insert({name:"user1"},{name:"user2"}) 
> db.user.find()
{ "_id" : ObjectId("519cd757f83727a8baf0a8e2"), "name" : "user1" }
若是咱们想一次插入多个文档,能够将多个文档组合成一个数组,这样就可以插入成功了,例子代码以下:
> db.user.find()
> db.user.insert([{name:"user1"},{name:"user2"}])
> db.user.find()
{ "_id" : ObjectId("519cd842f83727a8baf0a8e3"), "name" : "user1" }
{ "_id" : ObjectId("519cd842f83727a8baf0a8e4"), "name" : "user2" }
 咱们可使用javascript批量插入数据。因为mongodb shell简单的说就是一个javascript shell因此javascript代码能够在mongodb shell中运行,因此咱们可使用javascript代码进行批量插入数据,例如咱们插入10个用户到user集合中,代码以下:
> for(i=1;i<=10;i++){
... db.user.insert({_id:i,name:"user"+i,age:10+i})
... }

8.更新文档

#显示集合文档
mongos> db.col.find();
{ "_id" : ObjectId("55113e5477eaee1608881c84"), "name" : "antian" }
#更新文档
mongos> db.col.update({"name":"antian"},{"name":"wuhan"});
#显示集合文档
mongos> db.col.find();
{ "_id" : ObjectId("55113e5477eaee1608881c84"), "name" : "wuhan" }

9.删除文档

#删除文档内容
mongos> db.col.remove({"name":"antian"});
#删除集合:db.col.drop();

10.限制记录

mongos> db.col.find({},{"sip":1,_id:0}).limit(2);

11.排序文档

降序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":-1});
升序 mongos> db.col.find({},{"age":1,_id:0}).sort({"age":1});

12.建立索引

mongos> db.col.ensureIndex({"id":1})
相关文章
相关标签/搜索