MongoDB在windows系统的安装配置详解以及基本操作
2021/5/19 2:26:08
本文主要是介绍MongoDB在windows系统的安装配置详解以及基本操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.数据库的种类
种类
- 关系型:oracle、mysql、sqlite、sqlServer等
- 非关系型(Not Only SQL):MongoDB(文档)、Redis、Memcache(内存)
关系型和非关系型数据库软件区别
相同点:
- 都是数据库软件,用于存放项目数据
不同点:
- 关系型:
- 遵循sql标准,换句话说语法大同小异
- 有库和表约束等
- 非关系型:
- 没有统一标准
- 一般键值对形式存储
- 读取速度更快
2.MongoDB
MongoDB简介
MongoDB是什么
MongoDB是一个基于分布式文件存储的数据库,由c++语言编写,旨在为WEB应用提供可拓展的高性能数据存储解决方案。
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型数据库的。
- 基于分布式文件存储数据库(就是一个数据库)
- C++语言编写
- 支持的数据类型非常松散,是类似json的bson格式(后期插入修改数据写json)
解释:
json示例 {id:1,name:张三,age=20}
MongoDB功能
- 存放项目数据
- 实战开发写API接口(重要)
- 等等
3.下载安装MongoDB
下载
- MongoDB安装网址官网
- 选择社区版下载网址
- 点击最新版本,选择压缩包形式,开始下载
解压、创建包
- 一定要强调的,不要解压到中文目录名下否则可能会报错!!!(作者踩雷)
- 下载好之后解压
- 创建几个包在解压后的目录下(与bin目录同级)
- bak(用于备份)
- log(日志)
- data(数据)
如图
创建服务
-
以管理员身份运行cmd窗口,切换路径至bin目录下
-
运行命令
mongod --install --dbpath D:\mongoDB\zip\mongodb-windows-x86_64-4.4.6\mongodb-windows-4.4.6\data --logpath D:\mongoDB\zip\mongodb-windows-x86_64-4.4.6\mongodb-windows-4.4.6\log\mongodb.log
解释下:
--dbpath D:\mongoDB\zip\mongodb-windows-x86_64-4.4.6\mongodb-windows-4.4.6\data
是指你的数据存放的路径,是上一步我们创建的包data的路径
--logpath D:\mongoDB\zip\mongodb-windows-x86_64-4.4.6\mongodb-windows-4.4.6\log\mongodb.log
是日志包的路径加上日志文件(自己命名一个,不用创建) -
回车,没有cmd任何输出
-
去此电脑右键->管理->服务和应用程序->服务
-
找到mongoDB服务
如图
- 执行
net start mongodb
- 看到
MongoDB 服务正在启动 . MongoDB 服务已经启动成功。
- 就是安装配置成功了
作者亲身踩雷解决
那么如果不成功怎么办?
举一个作者踩雷的例子
我把mongodb解压到中文的路径下了,在管理的服务中看到mongodb服务的属性下的可执行路径有中文乱码,然后执行net start
mongodb,报找不到可执行文件的错误(好像是这个记不清了)
如何解决
- 果断切换cmd至bin目录下,运行
mongod.exe --remove --serviceName "MongoDB"
,删除掉这个服务(前提cmd是管理员身份打开) - 然后重新解压一个mongodb文件夹至一个没有中文的目录,然后就是之前的操作了(创建包、开启服务)
4.MongoDB的基本操作
基本概念
- 生活中:仓库、架子、物品
- 计算机:数据库(database)、集合(collection)、数据/文档(document)
进入数据库
bin目录下开启服务(net start mongodb
)后,输入mongo
进入数据库
查看数据库
show databases
(详写)
> show databases admin 0.000GB config 0.000GB local 0.000GB
show dbs
(简写)
> show dbs admin 0.000GB config 0.000GB local 0.000GB
选择数据库以及创建数据库
选择数据库
user 数据库名
> use admin switched to db admin
创建数据库(隐式创建)
user 数据库名
> use qq switched to db qq
但是为什么show dbs看不到这个qq数据库呢?
因为虽然qq数据库已经创建了,但是qq数据库是空的,所以看不到,后面只要插入一点数据,就能看到了。
查看集合
这里的集合类似于关系型数据库的表
show collections
> show collections
创建集合
db.createCollection("集合名")
> db.createCollection('c1') { "ok" : 1 }
此时我们再次查看数据库时,发现qq数据库已经存在了
> show dbs admin 0.000GB config 0.000GB local 0.000GB qq 0.000GB
同样查询qq数据库的集合也能查到集合了
> show collections c1
删除集合
db.集合名.drop()
> db.c1.drop() true > show collections
删除数据库
- 选择数据库
use 数据库名
- 执行删除
db.dropDatabase()
> use qq switched to db qq > db.dropDatabase() { "dropped" : "qq", "ok" : 1 } > show databases admin 0.000GB config 0.000GB local 0.000GB
5.MongoDB文档增删改查(CURD)
明确需求
数据库主要用来存放项目数据
我们已经学会了数据库和集合的创建
思考:如何实现集合中数据的增删改查呢?
回答:通过MongoDB语法即可
C增(Create)
单条插入
- 语法:db.集合名.insert(json数据)
- 说明:集合存在,则直接插入数据,集合不存在,则隐式创建
实例
> use qq switched to db qq > show collections > db.users.insert({name:"zhangsan",age:20}) WriteResult({ "nInserted" : 1 })
小贴士:
1.数据库和集合不存在就隐式创建
2.对象的键统一不加引号方便查看,但是在查看集合数据时系统会自动添加
3.mongodb会给每条数据增加一个全球唯一的_id键,当然这个键你是可以在添加时,写这个的,但是实战极其不推荐!!!
举个例子
db.users.insert({_id:123,name:“lisi”,age:21})
WriteResult({ “nInserted” : 1 })
db.users.find()
{ “_id” : ObjectId(“60a3bd32e98e23691411768e”), “name” : “zhangsan”, “age” : 20 }
{ “_id” : 123, “name” : “lisi”, “age” : 21 }
多条插入
- 语法:
db.集合名.insert([{},{},{}...])
实例
> db.users.insert([{name:"xiaoming",age:18},{name:"xiaogang",age:21},{name:"xiaohong",age:19}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) > db.users.find() { "_id" : ObjectId("60a3bd32e98e23691411768e"), "name" : "zhangsan", "age" : 20 } { "_id" : 123, "name" : "lisi", "age" : 21 } { "_id" : ObjectId("60a3c022e98e23691411768f"), "name" : "xiaoming", "age" : 18 } { "_id" : ObjectId("60a3c022e98e236914117690"), "name" : "xiaogang", "age" : 21 } { "_id" : ObjectId("60a3c022e98e236914117691"), "name" : "xiaohong", "age" : 19 } >
小拓展
> for(var i=1;i<=10;i++){ ... print(i) ... } 1 2 3 4 5 6 7 8 9 10
你明白了吗??!!
意思就是说你可以循环插入多条数据
实例
> use qq switched to db qq > db.createCollection('c2') { "ok" : 1 } > show collections c2 users > for(var i=1;i<=10;i++){ ... db.c2.insert({uid:i,name:"aaa",age:18}) ... } WriteResult({ "nInserted" : 1 }) > db.c2.find() { "_id" : ObjectId("60a3c239e98e236914117692"), "uid" : 1, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117693"), "uid" : 2, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117694"), "uid" : 3, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117695"), "uid" : 4, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117696"), "uid" : 5, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117697"), "uid" : 6, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117698"), "uid" : 7, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e236914117699"), "uid" : 8, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e23691411769a"), "uid" : 9, "name" : "aaa", "age" : 18 } { "_id" : ObjectId("60a3c239e98e23691411769b"), "uid" : 10, "name" : "aaa", "age" : 18 }
R查(Retrieve)
查询全部数据
- 语法:
db.集合名.find()
实例
> db.users.find() { "_id" : ObjectId("60a3bd32e98e23691411768e"), "name" : "zhangsan", "age" : 20 }
查询全部数据,只看某一列
- 语法:
db.集合名.find({},{要查看的列名:1})
实例
> db.users.find({},{name:1}) { "_id" : ObjectId("60a3bd32e98e23691411768e"), "name" : "zhangsan" } { "_id" : 123, "name" : "lisi" } { "_id" : ObjectId("60a3c022e98e23691411768f"), "name" : "xiaoming" } { "_id" : ObjectId("60a3c022e98e236914117690"), "name" : "xiaogang" } { "_id" : ObjectId("60a3c022e98e236914117691"), "name" : "xiaohong" }
查询全部数据,除了某一列都看
- 语法:
db.集合名.find({},{不看的列名:0})
实例
> db.users.find({},{name:0}) { "_id" : ObjectId("60a3bd32e98e23691411768e"), "age" : 20 } { "_id" : 123, "age" : 21 } { "_id" : ObjectId("60a3c022e98e23691411768f"), "age" : 18 } { "_id" : ObjectId("60a3c022e98e236914117690"), "age" : 21 } { "_id" : ObjectId("60a3c022e98e236914117691"), "age" : 19 }
查询年龄大于20岁的数据
- 语法:
db.集合名.find({列名:{$gt:数}})
实例
> db.users.find({age:{$gt:20}}) { "_id" : 123, "name" : "lisi", "age" : 21 } { "_id" : ObjectId("60a3c022e98e236914117690"), "name" : "xiaogang", "age" : 21 }
运算符表格
运算符 | 作用 |
---|---|
$gt | 大于 |
$gte | 大于等于 |
$lt | 小于 |
$lte | 小于等于 |
$ne | 不等于 |
$in | in |
$nin | not in |
U更新(Update)
持续更新中。。。。。。
这篇关于MongoDB在windows系统的安装配置详解以及基本操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23MongoDB身份认证机制揭秘!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用