热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB在windows系统的安装配置详解以及基本操作

1.数据库的种类种类关系型:oracle、mysql、sqlite、sqlServer等非关系型(NotOnlySQL):MongoDB(文档)、Redis、Memcache(内存




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不等于
$inin
$ninnot in

U更新(Update)

持续更新中。。。。。。



推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 今天我们学习,数据库mongodb的使用,最下面有mongodb的下载链接。pipinstallpymongo首先安装pymongo,然后在需要用到的地方importpymongo ... [详细]
  • MongoDB学习:(二)MongoDB简单使用
    MongoDB学习:(二)MongoDB简单使用MongoDB使用:执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面&amp;amp;gt;mongo提示 ... [详细]
  • mongoDB高可用集群环境搭建
    2019独角兽企业重金招聘Python工程师标准在生产环境下,部署一台mongodb服务的话,会存在以下问题:单点问题生产环境是一个 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求: ... [详细]
  • mongodb_Mongodb3.6 基操命令——help有大用
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb3.6基操命令——help有大用相关的知识,希望对你有一定的参考价值。前 ... [详细]
  • 【实战】MongoDB 分片原理概述 + 部署 MongoDB 分片群集 +【源码包】
    目录:1·MongoDB分片概述2·部署MongoDB分片群集3·MongoDB分片管理4·推荐MongoDB、MySQL基础文章5·文章总结MongoDB分片概述1)什么是分片: ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 由PHP转让Memcahce,首先,需要在server安装Memcache,如何安装Memcache这不是本文的重点,大约m ... [详细]
  • PHP语言之所以能有今天的地位,得益于PHP语言设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP语言入门简单,容易掌握,程序健壮性好。 ... [详细]
  • ubuntu 下php的mysql 扩展模块
    2019独角兽企业重金招聘Python工程师标准之前php与nginx环境已经搭建好了。但是php还没有集成mysql。没数据库啥也玩不转。放假下午在家没事便开始搞。开始谷歌 ... [详细]
author-avatar
手机用户2502887763
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有