macos下载安装
下载链接:https://www.mongodb.com/try/download/community
- 进入 /usr/local
1 | cd /usr/local |
- 下载
1 | sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-4.0.9.tgz |
- 解压
1 | sudo tar -zxvf mongodb-osx-ssl-x86_64-4.0.9.tgz |
- 重命名为 mongodb 目录
1 | sudo mv mongodb-osx-x86_64-4.0.9/ mongodb |
安装完成后,我们可以把 MongoDB 的二进制命令文件目录(安装目录/bin)添加到 PATH 路径中:
1 | export PATH=/usr/local/mongodb/bin:$PATH |
创建日志及数据存放的目录:
- 数据存放路径:
1 | sudo mkdir -p /usr/local/var/mongodb |
- 日志文件路径:
1 | sudo mkdir -p /usr/local/var/log/mongodb |
- 确保当前用户对以上两个目录有读写的权限:
1 | sudo chown liminghua /usr/local/var/mongodb |
以上 liminghua 是我电脑上的用户,你这边需要根据你当前对用户名来修改。
接下来使用以下命令在后台启动 mongodb:
1 | mongod --dbpath /usr/local/var/mongodb --logpath /usr/local/var/log/mongodb/mongo.log --fork |
如果不想在后端运行,而是在控制台上查看运行过程可以直接设置配置文件启动:
1 | mongod --config /usr/local/etc/mongod.conf |
启动后可以使用 mongo 命令打开一个终端
概念
术语
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
BSON
BSON是一种类JSON的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是BSON是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,
BSON有三个特点:轻量性、可遍历性、高效性。
与JSON的区别
BSON是由10gen(mongodb开发公司)开发的一个数据格式,目前主要用于MongoDB中,是mongodb的数据存储格式。BSON基于JSON格式,选择JSON进行改造的原因主要是JSON的通用性及JSON的schemaless的特性。
BSON主要会实现以下三点目标:
- 更快的遍历速度
- 对JSON格式来说,太大的JSON结构会导致数据遍历非常慢。在JSON中,要跳过一个文档进行数据读取,需要对此文档进行扫描才行,需要进行麻烦的数据结构匹配,比如括号的匹配,而BSON对JSON的一大改进就是,它会将JSON的每一个元素的长度存在元素的头部,这样你只需要读取到元素长度就能直接seek到指定的点上进行读取了。
- 操作更简易
- 对JSON来说,数据存储是无类型的,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。而使用BSON,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。当然,在MongoDB中,如果数字从整形增大到长整型,还是会导致数据总长变大的。
- 增加了额外的数据类型
- JSON是一个很方便的数据交换格式,但是其类型比较有限。BSON在其基础上增加了“byte array”数据类型。这使得二进制的存储不再需要先base64转换后再存成JSON。大大减少了计算开销和数据大小。
但是,在有的时候, BSON相对JSON来说也并没有空间上的优势,比如对{“field”:7},在JSON的存储上7只使用了一个字节,而如果用BSON,那就是至少4个字节(32位)
目前在10gen的努力下,BSON已经有了针对多种语言的编码解码包。并且都是Apache 2 license下开源的。并且还在随着MongoDB进一步地发展。
- JSON是一个很方便的数据交换格式,但是其类型比较有限。BSON在其基础上增加了“byte array”数据类型。这使得二进制的存储不再需要先base64转换后再存成JSON。大大减少了计算开销和数据大小。
数据库 db
一个mongodb中可以建立多个数据库。
MongoDB的默认数据库为”db”,该数据库存储在data目录中。
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
1 |
|
集合 collection
集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
1 | db.createCollection(name, options) //创建集合,options可选参数, 指定有关内存大小及索引的选项 |
options参数:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。 |
size | 数值 | (可选)为固定集合指定一个最大值,即字节数。如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
1 | show collections/show tables //查看集合 |
文档 document
文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
插入文档
1 | //插入文档 |
db.collection.insertOne() 用于向集合插入一个新文档,语法格式如下:
1 | db.collection.insertOne( |
db.collection.insertMany() 用于向集合插入一个多个文档,语法格式如下:
1 | db.collection.insertMany( |
- document:要写入的文档。
- writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
- ordered:指定是否按顺序写入,默认 true,按顺序写入。
也可以将数据定义为一个变量
1 | document=({title: 'MongoDB 教程', |
删除文档
1 | db.collection.deleteOne() |
更新文档
update() 方法用于更新已存在的文档
1 | db.collection.update( |
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
1 | db.col.insert({ |
查询文档
1 |
|
参数:
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
1 | //格式化返回,结果更易读 |
Springboot MongoTemplate
UrlParse
1 | @Data |
UrlParseDaoImpl
1 | @Component |
新建索引
1 | db.chat_log_progress.createIndex({"progressId":1}) |
重型安装
超管账户
db.createUser({user:”root”,pwd:”xcmgmongo”,roles:[{role:”userAdminAnyDatabase”,db:”admin”},{role:”readWriteAnyDatabase”,db:”admin”}]})
教程参考
https://blog.csdn.net/m0_46825740/article/details/126137014?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-126137014-blog-127940726.235^v38^pc_relevant_anti_vip&spm=1001.2101.3001.4242.2&utm_relevant_index=4
https://blog.csdn.net/weixin_44799217/article/details/127940726
相关目录
1 | mkdir -p /opt/mongodb/logs # 日志目录 |
配置文件
vim /opt/mongodb/mongodb.conf
1 | port= 27017 |
启动
mongod –config /opt/mongodb/mongodb.conf