【运维笔记】MongoDB

MongoDB简介

是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

/data/db 是 MongoDB 默认的启动的数据库路径(dbpath)

mongod## 服务进程

mongo## 后台管理 Shell

MongoDB 概念解析

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins  表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

MongoDB - 连接

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 这是固定的格式,必须要指定。
## mongodb://root:root@localhost:27017

常用命令

## 数据库
use database_name如果数据库不存在,则创建数据库
db查看当前连接的数据库
show dbs查看所有数据库
db.dropDatabase()删除当前数据库,默认为 test


## 集合/表
show tables/show collections##查看所有表/集合
db.createCollection(collection_name, options)##创建集合
db.collection_name.drop()##删除集合


## 文档/行
db.collection_name.find()##查看集合所有文档 pretty()以易读的方式来读取数据
db.collection_name.insertOne()##集合插入一行文档
db.collection_name.insertMan()##集合插入多行文档
可以将数据定义成一个变量,插入一个变量


## 更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
update() 方法用于更新已存在的文档。
db.collection_name.updateOne(##只更新一行updataMany更新多行
  <query>,##查询条件,类似sql update查询内where后面的。
  <update>,##一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  {
 upsert: <boolean>,#如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
 multi: <boolean>,#默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
 writeConcern: <document>#抛出异常的级别。
  }
)



save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection_name.save(
  <document>,#文档数据。
  {
 writeConcern: <document>
  }
)


## 删除文档
db.collection.deleteOne(##删除一行deleteMany删除多行
  <query>,
  {
 writeConcern: <document>
  }
)


## MongoDB 与 RDBMS Where 语句比较-####
等于 {<key>:<value>}
小于 {<key>:{$lt:<value>}}
小于或等于 {<key>:{$lte:<value>}} 
大于 {<key>:{$gt:<value>}}
大于或等于 {<key>:{$gte:<value>}} 
不等于 {<key>:{$ne:<value>}}



## AND 和 OR
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
db.collection_name.find({key1:value1, key2:value2})

MongoDB OR 条件
db.collection_name.find(
  {
 $or: [
 {key1: value1}, {key2:value2}
 ]
  }
)