MongoDB数据库 发表于 2023-04-11 更新于 2023-06-13
字数总计: 1.2k 阅读时长: 5分钟 阅读量: 上海
前言 MongoDB 数据库的学习
MongoDB 的简介 MongoDB 的概述
MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB 的安装 安装
安装完成可以用mongo -version
来查看版本检查是否安装成功
MongoDB 基本管理 通过以下命令,可以对 mongoDB 数据库进行一些基本的操作:
查看服务状态 service mongodb status
启动服务 service mongodb start
停止服务 service mongodb stop
重新载入资源 service mongodb reload
卸载 1 apt --purge remove mongodb mongodb-clients mongodb-server
MongoDB 基本配置 MongoDB 文件结构 mongoDB 数据库安装好以后,有以下四个比较重要的文件和目录:
主启动文件:/usr/bin/mongod
配置文件:/etc/mongodb.conf
日志文件存放目录:/var/log/mongodb
数据存放位置目录:/var/lib/mongodb
MongoDB 基本操作 启动 MongoDB 服务后可以进行 MongoDB 的基本操作
连接数据库 使用mongo
命令连接数据库:
查看已有的数据库 使用show dbs
命令进行查看:
1 2 3 4 5 6 NODE-REPL > show dbs admin 0.000GB config 0.000GB local 0.000GB >
使用数据库 如果使用的数据库不存在,就创建同名数据库:
1 2 3 FSHARP > use books switched to db books //选中books数据库
创建数据集合 类似于一张表,命令为db.createCollection("表名")
1 2 3 JAVASCRIPT > db.createCollection("user") { "ok" : 1 } //user创建成功
对数据集合进行操作 插入数据 插入命令有两种
1 2 db.表名.insert({}) db.表名.save({})
两者区别在于:插入数据时,如果_id 存在,insert 操作时,则插入失败,save 操作时,则更新数据
插入一条数据: 1 2 3 STYLUS > db.user.insert({_id:1,uname:"zhangsan",age:20,sex:"男"}) WriteResult({ "nInserted" : 1 }) //一般情况,第一个字段都是_id,如果没有,也会自动添加一个_id
插入多条数据: 1 2 3 4 5 6 7 8 9 10 11 12 PHP > db.user.insert([{_id:2,uname:"lisi",age:19,sex:"男"},{_id:3,uname:"wangwu",age:18,sex:"女"}]) //插入多条数据中间用逗号分开,然后用[]包起来就行 BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
查询数据 不带条件的查询 查询命令:db.表名.find()
1 2 3 4 5 JAVASCRIPT > db.user.find() { "_id" : 1, "uname" : "zhangsan", "age" : 20, "sex" : "男" } { "_id" : 2, "uname" : "lisi", "age" : 19, "sex" : "男" } { "_id" : 3, "uname" : "wangwu", "age" : 18, "sex" : "女" }
带条件的查询 查询命令:db.表名.find({条件})
1 2 3 PHP > db.user.find({sex:"男",uname:"zhangsan"}) //支持多条件查询 { "_id" : 1, "uname" : "zhangsan", "age" : 20, "sex" : "男" }
更新数据 更新命令:db.表名.update({条件},{$set:{}})
//这里条件也和查询一样支持多条件
1 2 3 4 5 6 7 STYLUS > db.user.update({_id:1},{$set:{uname:"ouwen"}}) //把_id为1的uname改为ouwen WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.user.find() { "_id" : 1, "uname" : "ouwen", "age" : 20, "sex" : "男" } //修改成功 { "_id" : 2, "uname" : "lisi", "age" : 19, "sex" : "男" } { "_id" : 3, "uname" : "wangwu", "age" : 18, "sex" : "女" }
删除数据 删除命令:db.表名.remove({条件})
1 2 3 4 5 6 STYLUS > db.user.remove({uname:"lisi"}) //删除uname为lisi的数据 WriteResult({ "nRemoved" : 1 }) > db.user.find() { "_id" : 1, "uname" : "ouwen", "age" : 20, "sex" : "男" } { "_id" : 3, "uname" : "wangwu", "age" : 18, "sex" : "女" }
查看所有的数据集 相当于查看表:show collections
1 2 3 AWK show collections user //我这里只有一张表
删除数据集合 类似于删除表:db.表名.drop()
1 2 3 PGSQL > db.user.drop() true //成功删除user表
删除数据库 先使用要删除的数据库:use books
删除命令:db.dropDatabase()
1 2 3 4 5 6 7 8 9 STATA > use books //使用books数据库 switched to db books > db.dropDatabase() //删除它 { "dropped" : "books", "ok" : 1 } > show dbs admin 0.000GB config 0.000GB local 0.000GB
退出数据库连接 可以使用Crl+C
或者输入exit
回车
1 2 3 4 AWK > exit bye root@iZ2ze4ojx7qtz1wv44gajnZ:~#