mongodb

MongoDB入门指南

 

1      简介

mongobd是一种面向集合的文档性数据库,数据结构有键值对组成,字段数据类似json数据格式。

与关系数据库区别:不支持多表连接、不支持事务存储过程,不适合存储数据间关系复杂的数据。一般用作数据仓库。

2      安装

https://www.mongodb.com/download-center#community官网下载。

通过cmd进入安装目录或者是解压目录。在目录下的bin目录有俩个可执行文件,分别是mongo.exe和mongod.exe。前者是启动客户端,后者是启动服务端。

在任意目录建立data\db,和data\db\log文件,用来存放数据可和日志。

启动服务:mongod –dbpathdata\db   --logpath data\log  –port 8888 ,设置服务端的数据库目录,日志目录,端口

然后重新打开命令行,进入安装目录,启动客户端。mongo localhost:8888

3      基本概念

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/

index

index

索引

table joins

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

 

4      数据库操作命令

use : 切换数据库,如果不存在就创建。

showdbs : 查看所有数据库

db : 当前数据库

db.dropDatabase(databaseName): 删除数据库

help : 全局范围帮助指令

db.help() : 数据库相关帮助指令

db.集合.help() : 集合相关帮助指令

5      集合操作命令

db.createCollection(name,options):创建集合,但一般不使用,当我们插入文档的时候会自动创建集合。

show collections: 显示当前数据库下所有集合

show tables : 显示所有集合,同上。

db.集合.drop(): 删除集合

6      文档操作命令

插入:

db.collection_name.insert(data):向集合插入文档,data为bson数据格式(json的扩展),也可以插入多条。”_id”每个文档都有的属性,类似于主键,是一个ObjectId对象,当插入数据的时候,“_id”重复会报错。当然类型也可以自己定义,只要不重复就行。

删除:

db.collection_name.remove(条件):删除文档,{“age”:10}这样表示删除age=10的文档。{“age”:{$gt : 10}} 表示删除age大于10的文档,如果条件为空,则删除全部。

常用操作符:$lt,$lte,$gt,$gte,$in,$nin,$or,$not

跟新:

db.collection_name.update():将符合条件的文档跟新为新文档

db.collection.update(<query>,<update>,

   {

     upsert: <boolean>,  //如果不存在的话,是否插入

     multi: <boolean>,   //是否跟新多个

     writeConcern: <document> //抛出异常的级别

   }

)

也可是使用操作符,$set(只跟新指定字段)与$inc(增加指定字段)

db.col.update({age:{$gt:5}},{$set:{name:”haha”}},{multi:true})将年龄大于5的学生名字跟新为haha,并且是多条跟新

查询:

db.collection.find(query,projection):查询文档

db.col.find({$or:[{age:5},{age:6}]},{name:”haha”},{age:1}).sort({age:-1}).pretty():查询年龄是5岁或者是6岁的学生,并且名字为haha的学生,只显示年龄,并按照年龄降序排列。

projection 表示显示哪些列,1为只显示该字段,0为除了该字段都显示

sort:1位正序,-1位倒序

pretty:将查询结果美化

_id:默认显示,如果想隐藏,只能显示指定

skip:从第几条数据开是显示

limit:显示几条,和skip组合使用可以实现分页

聚集函数:

db.collection.count(query): 统计总数

 

7      权限管理(3.0后)

mongodb中用户是属于数据库的,每个数据库都有自己的管理员,只能管理所属数据库。3.0前和3.0后的有所不同。

创建用户:首先需要在admin库中创建管理员,再在对用库中创建管理员。

> use admin

switched to dbadmin

>db.createUser(

...   {

...     user: "root",

...     pwd: "root",

...     roles: [ { role: "root", db:"admin" } ]

...   }

... )

 

Built-In Roles(内置角色):

    1. 数据库用户角色:read、readWrite;

    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

    4. 备份恢复角色:backup、restore;

    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    6. 超级用户角色:root 

    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

    7. 内部角色:__system

然后再在指定库中创建即可。

关闭服务,重新启动服务。在服务的启动上加上—auth,表示开启权限验证

启动客户端,进入指定数据库,db.auth(username,pwd)来进行登录。

删除用户:每个用户都会在admin下的sys.user集合中存在文档,所以想要删除用户只需删除admin库下的sys.user集合中的文档。或者使用db.dropUser(username)来删除。

8      索引

索引建立:db.colleciton.ensureIndex({key1:1,key2:1},{option})

可以是一个索引,也可以是复合索引,1表示升序创建索引,-1表示降序;也可以使用参数变为唯一索引。{unique:true}

查看索引:db.collection.getIndexes()

删除索引:db.collection.dropIndex({name:1})

                    db.collection.dropIndexes() 删除所有索引

重建索引:db.collection.reIndex()

分析语句:db.collection.find().explain(option)option可以为:”queryPlanner”, “executionStats”, 和”allPlansExecution”

9      数据导入导出

导出:mongoexport -h dbhost -d dbname -ccollectionName -o output –u name –p password

-h 数据库地址

-d 指明使用的库

-c 指明要导出的集合

-o 指明要导出的文件名(文件支持多种格式,如txt,wps,xls等)

-u 此数据库的用户名

-p 此数据库的的密码

 

导入:mongoimport-h dbhost -d dbname -c collectionname input –u name –p password

input 是文件路径

10            主从复制

设置一个主服务器(master)和多个从服务器,主服务器负责修改,从服务器负责查询。并且主服务器的每个修改都会同步到从服务器。这样避免了以前表锁导致的线程阻塞。实现读写分离。

11            Java操作mongodb

MongoClientmongoClient = new MongoClient( "localhost" , 27017 );

// 连接到数据库

MongoDatabase mongoDatabase= mongoClient.getDatabase("mycol"); 

System.out.println("Connectto database successfully");

mongoDatabase.createCollection("test");

System.out.println("集合创建成功");

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值