频道栏目
首页 > 资讯 > 其他综合 > 正文

MongoDB安装及常用操作

15-12-09        来源:[db:作者]  
收藏   我要投稿
一、MongoDB简介
 
1、介绍
 
1)MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,也属于NoSQL。
 
2)在高负载的情况下,可以添加更多的节点,可以保证服务器性能。
 
3)MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。
 
4)MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成;MongoDB文档类似于JSON对象;字段值可以包括其他文档,数组及文档数组。
 
2、MongoDB和关系型数据库对比
SQL术语/概念 MongoDB术语/概念 解释说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
二、MongoDB安装
 
如果安装epel扩展源,可以安装MongoDB2.4版本;但是我们要安装3.0版本,官方提供的源只支持64位系统。
1、搭建yum源
[root@centos ~]# vim /etc/yum.repos.d/mongodb-org-3.0.repo
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64
gpgcheck=0
enabled=1
 
2、安装
[root@centos ~]# yum install -y mongodb-org
注意:下载时候因为是国外的源,有可能会出现下载中断的情况。
 
3、修改配置文件
[root@centos ~]# vim /etc/mongod.conf                   //去掉三处注释
  fork: true                       
  pidFilePath: /var/run/mongodb/mongod.pid
  bindIp:
 
4、修改内核以及限制参数
[root@centos ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@centos ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@centos ~]# vim /etc/security/limits.conf                        //末尾添加
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
 
5、启动MongoDB
[root@centos ~]# service mongod start
[root@centos ~]# ls /var/lib/mongo/                                     //查看生成的文件
journal  local.0  local.ns  mongod.lock  storage.bson  _tmp
 
注意:若启动失败,可以用下面命令启动,会有错误提示信息
[root@centos ~]# mongod -f /etc/mongod.conf
 
三、连接MongoDB
1、本机直接运行下面命令进入到mongodb shell中
[root@centos ~]# mongo
 
2、若监听端口并不是默认的27017,则连接时需加--port选项,例如端口号被修改为27018:
[root@centos ~]# mongo --port 27018
 
3、远程连接MongoDB,需要加--host选项,例如
[root@centos ~]# mongo --host 127.0.0.1
 
4、如果设置了验证,则连接时需加上用户名和密码(与MySQL相似),例如
[root@centos ~]# mongo -utpp -p123456                //用户名tpp,密码123456
 
四、MongoDB用户管理
 
1、mongodb用户是针对库来的,建立用户时要先进入到对应的库里
> use test
switched to db test
 
2、创建用户及角色
> db.createUser({user:"admin",pwd:"123456",roles:[{role:'dbOwner',db:'userdb'}]})
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "dbOwner",
                        "db" : "userdb"
                }
        ]
}
 
3、查看所有用户
> use admin                                         //只有在admin库里才能查看到所有用户
switched to db admin
> db.system.users.find()                        //可以看到之前创建的admin用户
{ "_id" : "test.admin", "user" : "admin", "db" : "test", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "Ye/svPNeMZ5IsVUaNRHN6A==", "storedKey" : "yocgLHpm2MUlL/VmViLZVirJBAE=", "serverKey" : "M6Rj/hxMVbgvaF9TmG4y+k7Dg3g=" } }, "roles" : [ { "role" : "dbOwner", "db" : "userdb" } ] }
 
4、查看当前库下所有用户
> use test                                             //因为admin库没有用户,而test库有
switched to db test
> show users                                       //查看当前库下所有用户  
{
        "_id" : "test.admin",
        "user" : "admin",
        "db" : "test",
        "roles" : [
                {
                        "role" : "dbOwner",
                        "db" : "userdb"
                }
        ]
}

 

 
5、删除用户
> db.dropUser('admin')                      //要先进入该用户所在的库           
true
 
五、MongoDB库管理
 
1、查看版本
> db.version()
3.0.7
 
2、创建库
> use userdb                                //如果库存在就切换
switched to db userdb
> db.createCollection('mycol')       //创建集合mycol,当创建了集合后,我们才可以看到userdb库
{ "ok" : 1 }
 
3、查看库
> show dbs
admin   0.078GB
local   0.078GB
userdb  0.078GB
 
4、删除当前所在库
> db.dropDatabase()
{ "dropped" : "userdb", "ok" : 1 }
> show dbs
admin  0.078GB
local  0.078GB
 
5、查看当前库状态信息
> use admin
switched to db admin
> db.stats()
{
        "db" : "admin",
        "collections" : 4,
        "objects" : 10,
        "avgObjSize" : 67.2,
        "dataSize" : 672,
        "storageSize" : 28672,
        "numExtents" : 4,
        "indexes" : 3,
        "indexSize" : 24528,
        "fileSize" : 67108864,
        "nsSizeMB" : 16,
        "extentFreeList" : {
                "num" : 0,
                "totalSize" : 0
        },
        "dataFileVersion" : {
                "major" : 4,
                "minor" : 22
        },
        "ok" : 1
}

 

 
6、查看mongodb服务器的状态
> db.serverStatus()
 
六、MongoDB创建集合
 
语法:db.cretateCollection(name,option)
> use mydb
switched to db mydb
> db.createCollection('myclo',{capped:true,autoIndexID:true,size:6142800,max:10000})
{ "ok" : 1 }
 
语法说明:
 
name:集合的名字
 
option:用来配置集合的参数(都为可选)
 
1)capped true/false:如果为true,则启用封顶集合,封顶集合是固定大小的集合,当它达到其最大值,会自动覆盖最早的条目;如果为false,则也需要指定尺寸参数。
 
2)autoIndexID true/false:如果为true,自动创建索引_id字段的默认值是false。
 
3)size:指定最大大小字节封顶集合;如果封顶是true,那么还需指定这个字段,单位为B。
 
4)max:指定封顶集合允许在文件的最大数量。
 
七、MongoDB数据管理
 
1、查看集合
> show collections                   //也可以使用show tables
myclo
system.indexes
 
2、插入文档数据
> db.Account.insert({AccountID:1,UserName:"123",password:"123456"})
WriteResult({ "nInserted" : 1 })
> db.Account.insert({AccountID:2,UserName:'aaa',password:'123456'})
WriteResult({ "nInserted" : 1 })
 
注意:如果Account集合不存在,直接插入数据,mongodb会自动创建该集合
 
3、更新文档数据
> db.Account.update({AccountID:1},{"$set":{"Age":20}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
 
4、查看所有文档
> db.Account.find()
{ "_id" : ObjectId("5666000a6ee7f810bc23f731"), "AccountID" : 1, "UserName" : "123", "password" : "123456", "Age" : 20 }
{ "_id" : ObjectId("566601e16ee7f810bc23f732"), "AccountID" : 2, "UserName" : "aaa", "password" : "123456" }
 
5、根据条件查询文档
> db.Account.find({AccountID:2})
{ "_id" : ObjectId("566601e16ee7f810bc23f732"), "AccountID" : 2, "UserName" : "aaa", "password" : "123456" }
> db.Account.find({"UserName":"aaa"})
{ "_id" : ObjectId("566601e16ee7f810bc23f732"), "AccountID" : 2, "UserName" : "aaa", "password" : "123456" }
 
6、根据条件删除文档
> db.Account.remove({AccountID:1})
WriteResult({ "nRemoved" : 1 })
> db.Account.find()
{ "_id" : ObjectId("566601e16ee7f810bc23f732"), "AccountID" : 2, "UserName" : "aaa", "password" : "123456" }
 
7、删除集合
> db.Account.drop()
true
> show collections
myclo
system.indexes
 
8、查看集合状态
> use mydb                                 //先进入该库
switched to db mydb
> db.printCollectionStats()
myclo
{
        "ns" : "mydb.myclo",
        "count" : 0,
        "size" : 0,
        "numExtents" : 1,
        "storageSize" : 6144000,
        "lastExtentSize" : 6144000,
        "paddingFactor" : 1,
        "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
        "userFlags" : 1,
        "capped" : true,
        "max" : 10000,
        "maxSize" : 6144000,
        "nindexes" : 1,
        "totalIndexSize" : 8176,
        "indexSizes" : {
                "_id_" : 8176
        },
        "ok" : 1
}
---
system.indexes
{
        "ns" : "mydb.system.indexes",
        "count" : 1,
        "size" : 112,
        "avgObjSize" : 112,
        "numExtents" : 1,
        "storageSize" : 8192,
        "lastExtentSize" : 8192,
        "paddingFactor" : 1,
        "paddingFactorNote" : "paddingFactor is unused and unmaintained in 3.0. It remains hard coded to 1.0 for compatibility only.",
        "userFlags" : 0,
        "capped" : false,
        "nindexes" : 0,
        "totalIndexSize" : 0,
        "indexSizes" : {

        },
        "ok" : 1
}
---

 


相关TAG标签
上一篇:微商朋友圈暴富神话破灭值得深思
下一篇:复制datatable的行到另一个DT
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站