Mondb
Posted shengyang17
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mondb相关的知识,希望对你有一定的参考价值。
MongoDB简介
• MongoDB是为快速开发互联网Web应用而设计的数据库系统。
• MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。
• MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON)
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB优缺点
基础概念解析
SQL术语/概念 |
MongoDB术语/概念 |
解释/说明 |
database |
database |
数据库 |
table |
collection |
数据库表/集合 |
row |
document |
数据记录行/文档 |
column |
field |
数据字段/域 |
index |
index |
索引 |
table joins |
不支持 |
表连接,MongoDB不支持 |
primary key |
primary key |
主键,MongoDB自动将_id字段设置为主键 |
通过下图实例,我们也可以更直观的了解Mongo中的一些概念:
启动MongoDB服务
[krs@hadoop101 mongodb]$ bin/mongod
进入shell页面
[kris@hadoop101 ~]$ cd /opt/module/mongodb/
[kris@hadoop101 mongodb]$ bin/mongo
MongoDB shell version v4.0.10 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session "id" : UUID("66e2b331-e3c3-4b81-b676-1ee4bac87abf") MongoDB server version: 4.0.10 Welcome to the MongoDB shell.
基础概念详解
1 数据库
一个mongodb中可以建立多个数据库。MongoDB的默认数据库为"db",该数据库存储在data目录中。MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
1)显示所有数据库
> show dbs
admin:从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
2)显示当前使用的数据库
> db
test
3)切换数据库
> use local
switched to db local
> db
local
2 文档(Document)
文档是一组键值(key-value)对组成。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
一个简单的例子:
"name":"kris"
注意:
1.文档中的键/值对是有序的。
2.MongoDB区分类型和大小写。
3.MongoDB的文档不能有重复的键。
4.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
.3 集合
集合就是 MongoDB 文档组,类似于mysql中的table。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
下面我们来看看如何创建集合:
MongoDB 中使用 createCollection() 方法来创建集合。
语法格式:
db.createCollection(name, options)
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
字段 |
类型 |
描述 |
capped |
布尔 |
(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 |
autoIndexId |
布尔 |
(可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size |
数值 |
(可选)为固定集合指定一个最大值(以字节计)。 |
max |
数值 |
(可选)指定固定集合中包含文档的最大数量。 |
案例1:在test库中创建一个kris的集合
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
> db
test
> use test;
switched to db test
> db.createCollection("kris")
"ok" : 1
> show collections
kris
> db.kris.insert("name":"kris","url":"www.kris.com") //插入数据
WriteResult( "nInserted" : 1 )
> db.kris.find() //查看数据
"_id" : ObjectId("5d5fad9566a14dcba07e4b66"), "name" : "kris", "url" : "www.kris.com"
>
说明:
ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是:
前 4 个字节表示创建 unix 时间戳
接下来的 3 个字节是机器标识码
紧接的两个字节由进程 id 组成 PID
最后三个字节是随机数
案例2:创建一个固定集合mycol
案例3:自动创建集合
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
> db.mycol2.insert("name":"kris") WriteResult( "nInserted" : 1 )
> show collections kris mycol mycol2
案例4:删除集合
> db.mycol2.drop() True > show tables; kris mycol
MongoDB
- MongoDB是一个NoSQL的数据库 - MongoDB是一款文档型数据库(database) - 数据库指的就是一个存储数据的仓库 数据库可以使我们完成对数据的持久化的操作 - MongoDB数据库中存储的数据的基本单位就是文档(document), MongoDB中存储的就是文档,所谓文档其实就是一个“JSON” - MongoDB中的“JSON”我们称为BSON,比普通的JSON的功能要更加的强大 - MongoDB数据库使用的是javascript进行操作的,在MongoDB含有一个对ES标准实现的引擎, 在MongoDB中所有ES中的语法中都可以使用
数据库(database) 集合(collection) 文档(document) - 在MongoDB中,数据库和集合都不需要手动创建, 当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
- MongoDB的基本的指令 - 启动服务器 mongod --dbpath 路径 --port 端口号
- 启动客户端 mongo - MongoDB的CRUD的操作
- 基本操作 use 数据库
- 进入指定的数据库 show dbs
- 显示所有的数据库 show collections
- 显示数据库中所有的集合 db
- 显示当前所在的数据库
- 向数据库中插入文档 - db.collection.insert() - insert()可以向集合中插入一个或多个文档
db.<collection>.insert(doc)
- 向集合中插入一个文档
- 例子:向test数据库中的,stus集合中插入一个新的学生对象
name:"孙悟空",age:18,gender:"男"
db.stus.insert(name:"孙悟空",age:18,gender:"男")
- db.collection.insertOne() - 向集合中插入一个文档 - db.collection.insertMany() - 向集合中插入多个文档 - 查询数据库中的文档 - db.collection.find() - 可以根据指定条件从集合中查询所有符合条件的文档 - 返回的是一个数组 - db.collection.findOne() - 查询第一个符合条件的文档 - 返回的是一个对象 - db.collection.find().count() - 查询符合条件的文档的数量 - 修改数据库中的文档 - db.collection.update() - 可以修改、替换集合中的一个或多个文档 - db.collection.updateOne() - 修改集合中的一个文档 - db.collection.updateMany() - 修改集合中的多个文档 - db.collection.replaceOne() - 替换集合中的一个文档 - 删除集合中的文档 - db.collection.remove() - 删除集合中的一个或多个文档(默认删除多个) - db.collection.deleteOne() - 删除集合中的一个文档 - db.collection.deleteMany() - 删除集合中的多个文档 - 清空一个集合 db.collection.remove() - 删除一个集合 db.collection.drop() - 删除一个数据库 db.dropDatabase()
以上是关于Mondb的主要内容,如果未能解决你的问题,请参考以下文章