MongoDB下载,安装和初级使用

一.官网下载链接

二.安装步骤:



这里注意点击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表示降序

Windows下MongoDB下载,安装和初级使用相关推荐

  1. Windows下Git下载安装详细图文教程(亲测有效)

    Windows下Git下载安装详细图文教程(亲测有效) 文章目录 Windows下Git下载安装详细图文教程(亲测有效) 一.Git的下载 1.1官网下载 1.2 资源下载 二.Git的安装 三.总结 ...

  2. Windows下MongoDb服务安装及用户权限创建

    2019独角兽企业重金招聘Python工程师标准>>> 1.为什么我要写这个blog?虽然网上的教程满天飞,但都是按照正常流程来写,我写的这个文档包含了我安装服务是遇到的各种问题及处 ...

  3. Windows下MongoDB的安装与设置MongoDB服务

    Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐.Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB ...

  4. windows下mongodb的安装与配置

    下载安装 官网下载mongoDB:http://www.mongodb.org/downloads windows7 64位安装3.6版本会发生安装到一半后,就一直无法安装下去的问题(可能是因为安装时 ...

  5. python官网安装步骤-新手Windows下Python下载安装教程及配置注意事项

    新手如何下载安装Python以及配置环境变量呢?初学者选择Python2还是Python3呢?Windows下安装简单,初学者建议直接选择Python3- 首先分享Python下载方式 到Python ...

  6. windows下x265下载安装与配置

    本文转载自: https://blog.csdn.net/frd2009041510/article/details/50446007?spm=a2c4e.11153940.blogcont31081 ...

  7. Windows下MySQL下载安装、配置与使用

    用过MySQL之后,不论容量的话,发现比其他两个(sql server .oracle)好用的多,一下子就喜欢上了.下面给那些还不知道怎么弄的童鞋们写下具体的方法步骤. (我这个写得有点太详细了,甚至 ...

  8. Windows下Neo4j下载安装以及错误解决【附安装资源】

    1.资源在百度网盘提取,解压到自定义文件夹,我的路径D:\Program Files (x86)\neo4j-community-3.5.5\. 链接:https://pan.baidu.com/s/ ...

  9. Gradle在Windows下的下载安装与配置以及在IDEA中配置以及修改jar包位置

    场景 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具. 类似 Maven,但比之简单轻便.它使用一种基于 Groovy 的特定领域语言来声明项目设置, ...

  10. Windows下VirtualBox下载安装

    下载位置: https://www.virtualbox.org/wiki/Downloads 安装: 1,双击下载的exe文件: 2,安装为建议修改一下盘符 3,无脑下一步即可,直到最后安装成功,进 ...

最新文章

  1. 【机器学习基础】不会时间序列预测?不要紧,大神来教你
  2. 用ab进行POST,GET压力测试,且定义header及json的内容
  3. PureMVC(AS3)剖析:吐槽
  4. 前端学习(2678):懂代码之表格BaseTable编辑操作
  5. Java快速入门学习笔记1 | Eclipse使用
  6. 安卓页面布局中android:gravity与android:layout_gravity的区别
  7. 转Linux多线程条件下的计数器 2011-11-15 00:00中国IT实验室佚名
  8. jQuery源码系列(一)
  9. 美团架构师探秘Java生态系统,介绍JDK、JVM、JEP
  10. 手机软件APP下载类网站Pbootcms模板 游戏软件应用网站源码 模板自适应手机端
  11. ROS(ROUTEROS) 端口映射
  12. 天正电气图例_天正电气CAD教程之符号篇 - CAD自学网
  13. layui tree组件更改图标
  14. 一文了解新一代信息技术
  15. 理解softmax函数
  16. java.lang.IllegalStateException: stream has already been operated upon or closed
  17. 六度拓扑(www.6dtop.com)正式开源啦~~~(V1.0)
  18. 中文实时语音识别引擎
  19. python用matplotlib画玫瑰_用Python matplotlib 怎么画风向玫瑰图 ,能给出程序的?
  20. python如何解析网页的json_python 如何从网页jQuery中爬取JSON中的内容

热门文章

  1. Windows问题记录之任务栏图标透明
  2. 贴吧android客户端,百度贴吧推出Android平台手机客户端
  3. STM32:FSMC驱动TFTLCD(ST7789)
  4. 1人30天44587行代码,分享舍得网开发经验(修订版)
  5. DOS简介及基本操作
  6. HealthKit 的新增功能
  7. 转发电子通信类期刊投稿攻略
  8. php怎么解析xml,php解析xml方法实例详解
  9. 防火墙的数据包拦截方式
  10. STAMP可以用在win10上面吗