MongoDB-01学习
1.MongoDB是什么?
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在WEB应用提供可扩展的高性能数据存储解决方案。
它的特点:高性能、易部署、易使用,存储数据非常方便。
2.MongoDB术语/概念
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
3.MongoDB数据库
一个MongoDB中可以建立多个数据库。
MongoDB的默认数据库为“db”,该数据库存储在data目录中。
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
4.MongoDB集合
集合就是MongoDB文档组,类似于RDBMS(关系数据库管理系统:Relational Database Management System)中的表格。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同的格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
5.MongoDB文档
文档是一个键值(key-value)对(即BSON)。MongoDB的文档不需要设置相同的字段,并且相同的字段不需要相容的数据类型,这与关系型数据库有很大的区别,也是MongoDB非常突出的特点。
一个简单的例子
{"genres":["犯罪","剧情"],"title":"肖申克的救赎"}
6.MongoDB数据类型
数据类型 | 描述 |
---|---|
String | 字符串。存储数据常用的数据类型。在MongoDB中,UTF-8编码的字符串才是合法的。 |
Integer | 整型数值。用于存储数值。根据你所采用的服务器,可分为32位或64位 |
Boolean | 布尔值。用于存储布尔值(真/假) |
Double | 双精度浮点值。用于存储浮点值 |
Min/Max/keys | 将一个值与BSON(二进制的JSON)元素的最低值和最高值想对比。 |
Arrays | 用于数组或列表或多个值存为一个键 |
Timestamp | 时间戳。记录文档修改或添加时间 |
Object | 用于内嵌文档 |
Null | 用于创建空值 |
Symbol | 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。 |
Date | 日期时间,用UNIX时间格式来存储当前日期或时间。可以指定自己的日期时间:创建Date对象传入年月日信息。 |
Object ID | 对象ID,用于创建文档的ID |
Binary Data | 二进制数据。用于存储二进制数据 |
Code | 代码类型,用于在文档中存储JavaScript代码 |
Regular expression | 正则表达式类型,用于存储正则表达式 |
7.安装MongoDB
下载地址:https://www.mongodb.com/try/download/community
安装完成后,打卡命令行工具。启动服务
要么在安装目录下的bin目录下打开:mongo.exe文件,要不就配置好环境变量。执行以下语句:
mongod --dbpath d:data\d
以上是启动好之后的。验证:再打开一个命令 行终端。
mongo
出现以上,则表示安装成功,并且启动成功
8、MongoDB常用的命令
(1)数据库操作
db // 查询当前数据库
show dbs // 查询所有的数据库
use music // 创建/切换数据库
db.stats() // 显示当前DB的状态
db.version() // 查看当前DB的版本
db.getMongo() // 查看当前DB的连接机器地址
db.dropDatabase() // 删除数据库
(2)Collection集合操作
db.createCollection("collName",{size:20,capped:true,max:100); // 创建一个集合
db.collName.isCapped() // 判断集合是否为定容量
db.getCollection("collName") // 得到指定名称的集合
db.getCollectionNames() // 得到当前db所有集合
db.printCollectionStats() // 显示当前db所有集合的状态
(3)文档操作 增、山、改操作
db.collName.insert([{name:'n1',password:'123456'}]) // 插入数据
db.collName.save([{name:'n2',password:'123456'}]) // 插入数据
db.collName.find() // 查询数据
db.collName.update({name:'n1'},{$set:{name:'n3'}}) // 修改方法
db.collName.remove({name:'m2'}) // 删除
// 查询方法
db.collName.find() // 查询所有数据
db.collName.distinct('name') // 查询去重后的数据
db.collName.find({"age":20}) // 查找age = 20的记录
db.collName.find({"age":{$gt:22}}) // 查询age > 22 的记录
db.collName.find({"age":{$lt:22}}) // 查询age < 22 的记录
db.collName.find({"age":{$gte:25}}) // 查询age > = 25 的记录
db.collName.find({"age":{$lte:25}}) // 查询age < = 25 的记录
db.collName.find({"name":/mongo/}) // 查询name字段中包含mongo的数据
db.collName.find({"name":/^mongo/}) // 查询name中以mongo开头的
db.collName.find({},{name:1,age:1}) // 查询指定列name、age数据 相当于 select name,age from collName
db.collName.find({age:{$gt:25}},{name:1,age:1}) // 查询指定列name、age数据,age>25,相当于select name,age from collName where age > 25
db.collName.find().sort({age:1}) // 按照年龄升序排序
db.collName.find().sort({age:-1}) // 按照年龄降序排序
db.collName.find({name:'张三',age:22}) // 查询name=张三,age=22的数据,select * from collName where name = '张三' and age = 22
db.collName.find().limit(5) // 查询前5条数据
db.collName.find().limit(3).skip(3) // 跳过三条取三条
db.collName.find().limit(10).skip(5) // 查询5-10之间的数据
db.collName.find({$or:[{age:22},{age:25}]}); // or与 查询
db.collName.findOne() // 查询第一条数据
db.collName.find({age:($gte:25}}).count() // 查询某个结果集的记录条数