1. MongoDB简介

• MongoDB是为快速开发互联网Web应用而设计的数据库系统。
• MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。
• MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。(BSON)

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB是一个NoSQL的数据库,是一款文档型数据库(database);存储的数据的基本单位就是文档(document),所谓文档其实就是一个“JSON”  - MongoDB中的“JSON”我们称为BSON,比普通的JSON的功能要更加的强大。
数据库(database)
  集合(collection)
文档(document)
数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
MongoDB数据库使用的是JavaScript进行操作的,在MongoDB含有一个对ES标准实现的引擎,在MongoDB中所有ES中的语法中都可以使用。

MongoDB优缺点

基础概念解析

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

不支持

表连接,MongoDB不支持

primary key

primary key

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

通过下图实例,我们也可以更直观的了解Mongo中的一些概念:

2. 安装

2.1 Windows的安装和使用:

官方文档     

mongod.cfg(D:\ProgramFiles\MongoDB\Server\3.2) 要放在与bin的同级目录

systemLog:
destination: file
path: D:\ProgramFiles\MongoDB\data\log\mongod.log
storage:
dbPath: D:\ProgramFiles\MongoDB\data\db

 搜索cmd 以管理员身份运行: 

sc.exe create MongoDB binPath= "\"D:\ProgramFiles\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"D:\ProgramFiles\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

使服务自动启动

若不成功 sc delete MongoDB  然后重新来

2.2 在Linux中安装

通过WGET下载Linux版本的MongoDB

[kris@hadoop101 software]$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.3.tgz

将压缩包解压到指定目录

[kris@hadoop101 software]$ tar -zxvf mongodb-linux-x86_64-rhel62-3.4..tgz -C /opt/module/
//重命名
[kris@hadoop101 module]$ mv mongodb-linux-x86_64-rhel62-3.4./ mongodb

在安装目录下创建data文件夹用于存放数据和日志

[kris@hadoop101 mongodb]$ mkdir -p data/db
[kris@hadoop101 mongodb]$ mkdir data/logs/
[kris@hadoop101 logs]$ touch mongodb.log

在data文件夹下创建mongodb.conf配置文件

[kris@hadoop101 data]$ vim mongodb.conf
#端口号port =
#数据目录
dbpath = /opt/module/mongodb/data/db
#日志目录
logpath = /opt/module/mongodb/data/logs/mongodb.log
#设置后台运行
fork = true
#日志输出方式
logappend = true
#开启认证
#auth = true

完成MongoDB的安装后,启动MongoDB服务器:

// 启动MongoDB服务器   bin/mongod --dbpath 路径 --port 端口号
[kris@hadoop101 mongodb]$ bin/mongod -config /opt/module/mongodb/data/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process:
child process started successfully, parent exiting
// 访问MongoDB服务器
[kris@hadoop101 mongodb]$ bin/mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.
--13T09::44.816+ I CONTROL [initandlisten]

停止MongoDB服务器

[kris@hadoop101 mongodb]$ bin/mongod -shutdown -config data/mongodb.conf
killing process with pid:
数据库存储在data目录中。MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
> show dbs
admin .000GB
local .000GB
recommender .005GB
admin:从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。 > use recommender --该命令将创建一个新的数据库,如果存在,将返回现有的数据库。
switched to db recommender > db -- 显示当前使用的数据库
recommender > show collections -- 库下面所有的集合
AverageMovies
GenresTopMovies
Movie

集合就是 MongoDB 文档组,类似于MySQL中的table。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
MongoDB 中使用 createCollection() 方法来创建集合。
语法格式:
db.createCollection( name, options )
参数说明:

  •   name: 要创建的集合名称
  •   options: 可选参数, 指定有关内存大小及索引的选项

  options 可以是如下参数:

字段

类型

描述

capped

布尔

(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。

autoIndexId

布尔

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

size

数值

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

max

数值

(可选)指定固定集合中包含文档的最大数量。

> use test
switched to db test
> db
test
> db.createCollection("staff") //创建集合
{ "ok" : }
> db.createCollection("student")
{ "ok" : }
//① 插入单个对象; 也可自动创建集合,在MongoDB中,当你插入一些文档时,MongoDB会自动创建集合并插入文档。
> db.mycol.insert({"name":"alice","gender":"female","age":, "url":"www.baidu.com"}) //② 也可以将数据定义为一个变量,如下所示:
> document=({title: '名单',
   description: 'this is a mongodb',
   by: 'smith',
   url: 'http://www.google.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes:
   })
> db.stuff.insert(document) 插入文档你也可以使用 db.col.save(document) 命令。
如果不指定 _id 字段 save() 方法类似于 insert() 方法。
如果指定 _id 字段,则会更新该 _id 的数据。 //③插入数组
> db.staff.insert(
  [
    { name: "kk", age: , status: "A", },
    { name: "mm", age: , status: "A", },
    { name: "an", age: , status: "D", }
  ]
) //④ 3.2版本可使用insertOne 或 insertMany
向集合中插入一个文档
> db.staff.insertOne(
{
name: "sue",
age: ,
status: "P"
}
) 向集合中插入多个文档
> db.staff.insertMany(
[
{ name: "bob", age: , status: "A", },
{ name: "ahn", age: , status: "A", },
{ name: "xi", age: , status: "D", }
]
) //⑤ 一次插入多条数据
、先创建数组
、将数据放在数组中
、一次 insert 到集合中
var arr = [];
for(var i= ; i<= ; i++){
arr.push({num:i});
}
db.numbers.insert(arr); > show collections
staff
student > db.staff.find() //查看数据
{ "_id" : ObjectId("5db004f6a68cc860f4652fbb"), "name" : "kris", "age" : , "url" : "www.kris.com" }
ObjectId 类似唯一主键,可以很快的去生成和排序,包含 bytes,含义是:   
  前 个字节表示创建 unix 时间戳   
  接下来的 个字节是机器标识码   
  紧接的两个字节由进程 id 组成 PID   
  最后三个字节是随机数

文档是一组键值(key-value)对组成。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

一个简单的例子: {"name":"kris"}

  注意:

    1.文档中的键/值对是有序的。

    2.MongoDB区分类型和大小写。

    3.MongoDB的文档不能有重复的键。

    4.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。

删除集合
> db.mycol.drop() True

MongoDB 条件操作符

$gt -------- greater than  >
$gte --------- gt equal >=
$lt -------- less than <
$lte --------- lt equal <=
$ne ----------- not equal !=
$eq -------- equal =

修改

如果指定字段不存在$set操作符将会添加一个新的字段使用指定的值,前提是新字段不能违反类型规约,如果你使用点号指定一个不存在的内嵌文档字段将会添加一个新的内嵌字段;  如果指定多个字段值对,$set操作符将会新增或者更新每个字段;

> db.staff.update({'title':'名单'},{$set:{'title':'花名册'}}) //只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : })
> db.staff.update({'title':'名单'},{$set:{'title':'花名册'}}, {multi:true}) > db.staff.find().pretty() // 查看已修改成功; pretty()是美观的展示
> db.staff.update({"age" : { $gt : } }, {$set : {"name": "heihei"}}); //默认只修改第一条,加true,false也是修改第一条
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : }) > db.staff.update({"age" : { $gt : } }, {$set : {"status": "a"}}, false,true); //全部更新; 两个true,true也是全部更新
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : }) > db.staff.update({"name" : { $eq : "bob"} }, {$inc : {"age": }}, false,false); //只更新第一条记录, 若改为true,true即全部更新
WriteResult({ "nMatched" : , "nUpserted" : , "nModified" : }) - db.collection.updateOne() - 修改集合中的一个文档
- db.collection.updateMany() - 修改集合中的多个文档
- db.collection.replaceOne() - 替换集合中的一个文档

- 查询数据库中的文档
- db.collection.find()
- 可以根据指定条件从集合中查询所有符合条件的文档
- 返回的是一个数组
- db.collection.findOne()
- 查询第一个符合条件的文档
- 返回的是一个对象
- db.collection.find().count()
- 查询符合条件的文档的数量 - 删除集合中的文档
- db.collection.remove()
- 删除集合中的一个或多个文档(默认删除多个)
- db.collection.deleteOne()
- 删除集合中的一个文档
- db.collection.deleteMany()
- 删除集合中的多个文档
- 清空一个集合
db.collection.remove({})
- 删除一个集合
db.collection.drop()
- 删除一个数据库
db.dropDatabase()

Mondb的更多相关文章

  1. mondb 常用命令学习记录

    mondb 常用命令学习记录 一.MongoDB 下载安装 MongoDB官网 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制 ...

  2. monodb C#接口封装

    mongodb的C#封装,驱动是samus/mongodb-csharp 1.连接类 using MongoDB; using MongoDB.Linq; namespace DBModel { pu ...

  3. Mongodb 安装 以及 问题解决-摘自网络

    一,下载 1.官网为:http://www.mongodb.org/ :下载安装程序的地址为:http://www.mongodb.org/downloads ,选择选择的是Windows 32-bi ...

  4. 5.非关系数据库(Nosql)它mongodb:创建一个集合,导出和导入备份, 数据恢复,进出口

     1 固定集合 固定集合值得是事先创建并且大小固定的集合 2 固定集合的特征:固定集合非常像环形队列.假设空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说.固定集合适用于不论什么想要自己 ...

  5. 使用SpringBoot开发REST服务

    本文介绍如何基于Spring Boot搭建一个简易的REST服务框架,以及如何通过自定义注解实现Rest服务鉴权 搭建框架 pom.xml 首先,引入相关依赖,数据库使用mongodb,同时使用red ...

  6. monog和github学习

    1.导出服务器数据库到本地以json的格式储存:mongoexport -h ip -d dbname -c user -o D:\mondb\user.json2.导入本地Json到本地项目中:D: ...

  7. wamp 环境安装php_mongo 或 mongodb的扩展

    特别注意:momgo 与mondb 是两个不同的扩展,不是同一个,这是一个坑 1.查看你的php版本,Compiler,Thread safety版本 2.下载地址 https://pecl.php. ...

  8. NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署

    NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...

  9. 副本集mongodb 无缘无故 cpu异常

    mondb 服务器故障 主从复制集 主:   192.168.1.106从:   192.168.1.100仲裁:192.168.1.102 os版本:CentOS Linux release 7.3 ...

随机推荐

  1. vue 指令和修饰符

    1. v-textv-text主要用来更新textContent,可以等同于JS的text属性. <spanv-text="msg"></span> 这两者 ...

  2. SQL查询--内连接、外连接、自连接查询

    先创建2个表:学生表和教师表   1.内连接: 在每个表中找出符合条件的共有记录.[x inner join y on...] 第一种写法:只用where SELECT t.TEACHER_NAME, ...

  3. 【STM32H7教程】第15章 STM32H7的GPIO基础知识(重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第15章       STM32H7的GPIO基础知识(重要) ...

  4. 基于python的selenium常用操作方法(1)

    1 selenium定位方法    Selenium提供了8种定位方式. ·         id ·         name ·         class name ·         tag ...

  5. 100道MySQL常见面试题总结,看完直接收藏

    前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...

  6. 记一次收集APP native崩溃信息

    最近在学习 极客时间Android开发高手课 老师推荐了Breakpad开源库来采集native 的crash1.为什么要使用Google Breakpad? 我们在开发过程中,Android JNI ...

  7. Web前端——Html常用标签及属性

    html 常用的标题等标签就不记录了,只记录一下比较少见的标签以及属性 表格 table td 单元格 tr 表的行 th 表头 td或th可以下面的两个属性达到跨行或跨列 表格跨行 rowspan ...

  8. sql server 随记 -- 月份/日期 查询

    月份 SELECT * FROM ( ] ) a UNPIVOT ( xxx ]) ) a2; 日期 SELECT * FROM ( ] )a UNPIVOT( xxx ]) )a2 (存档)

  9. Java生鲜电商平台-微服务入门与服务的拆分架构实战

    Java生鲜电商平台-微服务入门与服务的拆分架构实战 刚开始进入软件行业时还是单体应用的时代,前后端分离的概念都还没普及,开发的时候需要花大量的时间在“强大”的JSP上面,那时候SOA已经算是新技术了 ...

  10. python中time、datetime模块的使用

    目录 python中time.datetime模块的使用 1.前言 2.time模块 1.时间格式转换图 2.常用方法 3.datetime模块 python中time.datetime模块的使用 1 ...