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,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。

autoIndexId

布尔

(可选)如为 true,自动在 _id 字段创建索引。默认为 false。

size

数值

(可选)为固定集合指定一个最大值(以字节计)。
如果 capped true,也需要指定该字段。

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的主要内容,如果未能解决你的问题,请参考以下文章

mondb 常用命令学习记录

mondb08---导入导出

scrapy连接MongoDB

linux 安装mongo

关于Linux的一二三