Windows下MongoDB下载,安装和初级使用

MongoDB下载,安装和初级使用

一.官网下载链接

1.Version选择current release版本稳定,2.OS更具自己的系统选择,3.Package:MSI是可执行的安装程序,ZIP则是安装好的后压缩文件。根绝个人爱好来选择

二.安装步骤:

请添加图片描述
请添加图片描述
这里注意点击Custom进行自定义配置,选择Complete选项则会默认安装GUI,后期安装时进度条会卡住
请添加图片描述
这里这里将默认Install MongoDB as a Service取消掉,点击Next下一步即可
请添加图片描述
请添加图片描述
默认勾选Install MongoDB Compass时记得取消勾选再点击Next,MongoDB Compass是一个图形化界面管理工具,我们可以到官网下载

请添加图片描述
请添加图片描述

三.验证是否安装成功

(一)在想保存数据文件的路径创建一个data目录,data目录下创建db文件夹

cd到安装目录下的bin目录,运行mongod.exe --dbpath=你的db目录路径,运行成功会出现以下信息:在这里插入图片描述
在这里插入图片描述
运行完mongod.exe --dbpath命令之后就可以关闭小黑窗

(二)在安装路径下的bin目录运行mongo.exe后浏览器访问127.0.0.1:27017即可出现以下结果:

在这里插入图片描述

(三)创建MongoDB配置文件(可选操作)

systemLog:
destination:file
path:D:\Programme\Library\mongodb-win32-x86_64-2012plus-4.2.6\data\log
storage:
dbpath:D:\Programme\Library\mongodb-win32-x86_64-2012plus-4.2.6\data\db

详解:path:路径下需要手动创建log文件夹,并在其目录下手动创建mongod.log文件
dbpath:生成的数据文件路径

(四)安装MongoDB服务(可选操作)

mongod.exe --config "D:\Programme\Library\mongodb-win32-x86_64-2012plus-4.2.6\mongod.cfg" --install
注意:--config后有一个空格,新手容易忽略
运行成功会有以下提示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200503100548343.PNG)

(五)MongoDB启动与关闭:

启动:net start mongodb
关闭:net stop mongodb
当出现指定错误是因为没有正常关闭mongod服务,导致mongod被锁
解决方案:进入db文件夹,删除mongod.lock文件,然后重新启动服务即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200503101019335.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NDIyMA==,size_16,color_FFFFFF,t_70) 
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200503101219845.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NDIyMA==,size_16,color_FFFFFF,t_70)

四.零碎知识点

(一)概述

  1. 属于No SQL,全名为Not Only SQL,指的是非关系型的数据库,随着访问量的提升,网站的数据库性能出现了问题,于是nosql被设计出来。
  2. 由C++语言编写,是一个基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案,在高负载的情况下,添加多的结点,可以保证服务器性能。
  3. MongoDB将数据存储一个文档(多个键及其关联的数值有序的放置在一起),数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。

(二)优点

  1. 高可扩展性,分布式计算,低成本,架构的灵活性,半结构化数据,没有复杂的关系。
  2. MongoDB提供了一个面向文档存储,基本的思路就是将原来"行"的概念换成更加灵活的"文档"模型。一条记录可以表示非常复杂的层次关系。
  3. MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可以轻易查询文档中内嵌的对象及数组。
  4. 非常容易扩展。面对数据量的不断上涨,通常有两种解决方案,一种是购买更好的硬件,另一种是分散数据,进行分布式的扩展,前者有着非常大的缺点,因为硬件通常是有物理极限的,当达到极限以后,处理能力就不可能再进行扩展了。所以建议的方式是使用集群进行扩展。MongoDB所采用的面向文档的数据模型使其可以自动在多台服务器之间进行分割数据。它还可以平衡集群的数据和负载,自动重新排文档。
  5. 支持Python,C++,Java,PHP,C#,RUBY等多种语言。
  6. 丰富的功能包括索引,存储JavaScript,聚合,固定剂和,文件存储等。
  7. 方便的管理,除了启动数据库服务器外,几乎没有什么必要的管理操作。管理集群只需要知道有新增的节点,就会自动继承和配置新节点。

(三)缺点

  1. 没有标准化
  2. 有限的查询功能(到目前为止)
  3. 最终一致是不直观的程序

(四)与SQL语句对比

SQL术语 MongoDB术语
database database
table collection
column field
row document
index index
table joins
primary key primary key

(五)列子:{name:“小码陈”, age:20, hobby:[“看书”, “旅游”, “看电影”]}

(六)注意

  1. MongoDB区分类型的大小写
  2. MongoDB的文档不能有重复的键
  3. MongoDB集合就是一组文档的组合。如果将文档类比数据库中的行,那么集合就可以类比数据库中的表并且集合是无模式的,也就是说集合中存储的文档的结构可以是不同

五.MongoDB用法总结

一.配置文件

(一)创建mongod.cfg配置文件

systemLog:
destination:file
path:创建log路径
storage:
dbpath:创建db路径

(二)安装MongoDB服务

mongod.exe --config "mongo.cfg文件路径" --install

注意:–config后有一个空格

(三)命令行下运行MongoDB服务器

进入到bin目录或者添加环境变量后执行:mongod.exe --dbpath=选择一个存放db服务器的路径

(四).安装pymongo模块

pip install pymongo

二,操作MongoDB数据库

(一).创建MongoDB数据库

语法:use 数据库名

注意:如果数据库不存在则创建数据库,否则切换到指定;如果刚刚创建的数据库不在列sex表中,如果要显示它,我们需要像刚刚创建的数据库中插入一些数据:

db.student.insert({name:  "小明",  age:  20,  sex:  1,  address:  "地球",  isDelete:  0})

(二).删除数据库

前提:使用当前数据库(use 数据库名)

db.dropDatabase()

(三).查看所有数据库

show dbs

(四).查看当前正在使用的数据库

方案1:db
方案2:db.getName()

(五).断开连接

exit

(六).查看命令api

help

三,集合操作

(一)查看当前数据库下有哪些集合

show collections
(二)创建集合

a,

语法:db.createCollection("集合名")
示例:db.createCollection("class")
b,
语法:db.集合名.insert(document)
示例:db.student.insert({name:  "小小明",  age:  19,  sex:  1,  address:  "地球",  isDelete:  0})

区别:两者区别在于前者创建的是一个空的集合,后者创建一个空的集合并添加一个文档

3.删除当前数据库中的集合

语法:db.集合.drop()
示例:db.class.dop()

四,文档操作

(一)插入文档

a,使用insert()方法插入
语法:db.集合名.insert(document)
插入一个:db.student.insert({name: "小花",  age: 23,  sex: 0,  address: "水星",  isDelete: 0})
语法:db,集合名.insert([文档1,  文档2...文档n])
插入多个:插入的内容用一个列表——db.student.insert([{name:"小光", age:20, sex:1, address:"冥王星", isDelete:0}, {name:"小小光", age:19, sex:0, address:"海王星", isDelete:0}])
b,使用save()方法插入
语法:db.集合名.save(文档)
说明:如果不指定\_id字段,save()方法类似于insert()方法;让如果指定\_id字段,则会更新_id字段的数据
不指定:db.student.save({name:  "小华",  age:  23,  sex:  1,  address:  "火星1",  isDelete:  0})
指定:db.student.save({_id: ObjectId("5eb0cadb6b6799dd5dcd43f6"), name:  "小华",  age:  24,  sex:  1,  address:  "火星2",  isDelete:  0})

(二)文档更新

a,update()方法用更新已存在的文档

语法:

	db.集合名.update(
					<query>,
					<update>{upset:<boolean>,
					multi:<boolean>,
					writeConcern:<document>,
					})
参数说明:

query:update的查询条件,类似于SQL中update语句内where后边的内容
update:update的对象和一些更新的操作符($set, ​$inc)等。​$set直接更新;$inc在原有的基础上累加后更新
upset:可选。如果不存在update记录,是否当新数据插入。True:插入;False:不插入,默认为False
multi:可选。MongoDB默认是False,如果只更新找到的第一条记录;如果这个参数为True,则按照这个条件查找出来的全部更新
writeConcern:可选。抛出异常的级别
需求:将峰的年龄更新为21

示例:db.student.update({name:"小马"}, {$set:{age:21}}) # 覆盖原有结果
示例:db.student.update({name:"小马"}, {$inc:{age:21}}) # 原有结果上累加
测试:db.student.insert([{name:"小马", age:20, sex:1, address:"地球", isDelete:0}, {name:"小张", age:20, sex:1, address:"地球", isDelete:0}])
示例:db.student.update({name:"陈"}, {$set:{age:21}}, {multi:true}) # 全改
b,save()方法通过传入的文档替换已有的文档
语法:db.集合名.save(document, {writeConcern:<document>})
参数说明:

document:文档数据
writeConcern:可选,抛出异常级别

(三)文档删除

说明:在执行remove()函数前,先执行find()命令来判断执行的条件是否存在一个良好习惯,删除操作的条件后续再讲

语法:
db.集合名.remove(
				query,
				{
				justOne:<booleand>,
				writeConcern:<document>
				}
				)
示例:db.student.remove({name:"小齐"}) # 全删
示例:db.student.remove({name:"小齐"}, {justOne:true}) # 只删除一个,同类中最后一个
参数说明:

​ query:可选,删除文档的条件
​ justOne:可选,如果为true或1,则只删除一个文档

(四)文档查询

a,

find()方法:查询集合下所有的文档(数据)
语法:db.集合名.find()
示例:db.student.find()

b,

find()方法查询指定列
语法:db.集合名.find(
					query,
					{
						<key>:1,
						<key>:1
					}
				)
示例:db.student.find({sex:1}, {name:1, age:1})

参数说明

query:查询条件
key:要显示的字段,1表示显示

c,pretty()方法以格式化的方式来显示文档

示例:db.student.find().pretty()

d,findOne()方法查询匹配结果的第一条数据

示例:db.student.findOne({sex:1})

(五)查询条件操作符

作用:条件操作符用于比较两个表达式,从MongoDB集合中获取数据

a,大于 - $gt

语法:db.集合名.find({<key>:{<$gt>:<value>}})
示例:db.student.find({age:{$gt:20}})

b,大于等于 - $gte

语法:db.集合名.find({<key>:{$gte:<value>}})

c,小于 - $lt

语法:db.集合名.find({<key>:{$lt:<value>}})

d,小于等于 - $lte

语法:db.集合名.find({<key>:{$lte:<value>}})

e,大于等 和 小于等于 - $gte 和 $lte

语法:db.集合名.find({<key>:{$gte:<value>, $lte:<value>}})

f,等于 - :

语法:db.集合名.find({<key>:<value>})

g,使用_id进行查询

语法:db.集合名.find({"_id":ObjectId("ID值")})
示例:db.student.find({"_id":ObjectId("5eb12866af13f845f36bc544")})

h,查询某个结果集的数据条数

语法:db.集合名.find().count()

i,查询某个字段的只当中是否包含另一个值

语法:db.集合名.find({name:/包含的关键字/}) # 汉字不能用引号,否则查询不出想要的结果
示例:db.student.find({name:/陈/})

j,查询某个字段的值是否以另一个值开头

语法:db.集合名.find({name:/^陈/})

(六)条件查询and 和 or

a,and条件

语法:db.集合名.find({条件1,条件2, ..., 条件n})
示例:db.student.find({sex:1, age:{$gt:21}})

b,or条件

语法:db.集合名.find(
				{
					$or:[{条件1}, {条件2}, ..., {条件n}]
				}
				)
示例:db.student.find({$or:[{age:20}, {age:{$lte:22}}]})

c,or和and联合使用

语法:db.集合名.find(
				{
					条件1,
					条件2,
					$or:[{条件1}, {条件2}]
				}
				)

(七)limit, skip

a,limit():读取指定数量的数据记录

db.student.insert([{name:"韵", age:20, sex:0. address:"湖北十堰", isDelete:0}, {name:"昀", age:20, address:"湖北十堰"}])
db.student.find().limit(2)

b,skip():跳过指定数量的数据

db.student.find().skip(3)

c,skip与limit联合使用

通常用这种方式来实现分页功能
示例:db.student.find().skip(2).limit(2)

(八)排序

语法:db.集合名.find().sort({<key>:1|-1})
示例:db.student.find().sort({name:1})
注意:1表示升序;-1表示降序

猜你喜欢

转载自blog.csdn.net/weixin_45364220/article/details/105896508