MongoDB学习

MongoDB学习
Drift1ng1、单击部署
1.1Windows中安装启动
从官网下载安装包
1 | https://www.mongodb.com/try/download/community |
1.2Linux下载
1 | https://www.mongodb.com/try/download/community |
下载完之后就解压
1 | tar -xvf mongodb-linux-x86_64-amazon2023-8.2.2.tgz |
新建几个目录,分别用来存储数据和日志
1 | #数据存储目录 |
新建并修改配置文件
1 | gedit /mongodb/single/mongod.conf |
配置文件内容如下:
1 | systemLog: |
将mogdb配置环境变量
1 | # 编辑bash配置文件 |
想要自己连接上要
1 | # 回到 mongodb 目录 |
注意:这个启动这个mongodb的时候是要先开启服务
1
2 (base) ┌─[drifting@drift1ng]─[~]
└──╼ $mongod -f /mongodb/single/mongod.conf接着就可以直接连接上这个数据库
1
2 (base) ┌─[drifting@drift1ng]─[~]
└──╼ $mongosh项目6初始化数据库出现的问题,解决方案,这个问题是因为数据库中存在一个旧的
login_name索引(可能是之前其他项目留下的)。我们需要先清除数据库和这个索引。
1 mongosh cs142project6 --eval "db.users.dropIndexes()"索引已删除。现在让我们清空并重新加载数据库:
1 mongosh cs142project6 --eval "db.dropDatabase()"数据库已清空。现在重新加载数据:
1 node loadDatabase.js
2、基本常用命令
2.1数据库操作
2.1.1创建数据库
如果数据库不存在则自动创建,可以看下面这个例子
1 | use 数据库名称 |
查看所有数据库的命令
1 | show dbs |
在MongoDB中,集合只有在内容插入后才会创建
查看当前正在使用的数据库命令
1 | db |
Mongodb中默认的数据库是test,如果没有选择数据库,集合将存放在test数据库中。
2.1.2数据库的删除
MongoDB删除数据库的语法
1 | db.dropDatabase() |
提示:主要用来删除已经持久化的数据库
ℹ️ 提示
- admin:从权限的角度来看,这是”root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端的命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器
- local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息
2.2集合操作
2.2.1集合的显示创建
基本语法
1 | db.createCollection(name) |
参数说明:name是要创建的集合名称
例如:创建一个名为mycollection的普通集合
1 | db.createCollection("mycollection") |
查看当前数据库中的表:show tables命令
1 | show collections |
2.2.2集合的删除
集合删除语法格式如下:
1 | db.collection.drop() |
返回值:如果成功删除选定的集合,则drop()方法返回true,否则放回false。例如删除mycollection集合
1 | db.mycollection.drop() |
2.3文档基本CRUD
2.3.1插入数据
向comment的集合中插入一条测试数据:
1 | db.comment.insert({"articleid":"100000","content":"今天天气真好","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null}) |
1)如果comment集合不存在,则会隐式创建。
2)mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题
3)插入当前日期使用new Date()
4)插入数据没有指定_id,会自动生成主键值
5)如果某字段没值,可以赋值为null,或不写该字段
向comment中插入多条数据的方法是
1 | db.comment.insertMany([{"articleid":"100000","content":"今天天气真好","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null},{"articleid":"100000","content":"今天天气真好","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null},{"articleid":"100000","content":"今天天气真好","userid":"1001","nickname":"Rose","createdatetime":new Date(),"likenum":NumberInt(10),"state":null}]) |
2.3.2查询数据
单个表(集合)的查询
1 | db.comment.find({}) |
如果要查询userid为1003的数据
1 | db.comment.find({userid:"1003"}) |
如果查询的用户有多条数据想要查看第一条数据可以使用
1 | db.comment.findOne({userid:"1003"}) |
投影查询:如果查询的结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)
如:查询结果只显示_id、userid、nickname:
1 | db.comment.find({userid:"1003"},{userid:1,nickname:1}) |
2.3.3查看数据
先查看数据库
1 | test> show dbs |
接着就是选一个数据库进行查看
1 | test> use cs142project6 |
查看这个数据库中的表
1 | cs142project6> show collections |
接着查看一个users表中的数据
1 | cs142project6> db.users.find() |



