MongoDB数据库学习(一)

一、NoSQL数据库
1、什么是NoSQL?
NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

2、为什么使用NoSQL ?
今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。

3、NoSQL的优点/缺点
优点:
• - 高可扩展性
• - 分布式计算
• - 低成本
• - 架构的灵活性,半结构化数据
• - 没有复杂的关系
缺点:
• - 没有标准化
• - 有限的查询功能(到目前为止)
• - 最终一致是不直观的程序

二、MongoDB
介绍MongoDB之前我们简单介绍了NoSQL型数据库,其中NoSQL数据库中最杰出的两个代表就是MongoDB 和 Redis;

1、什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

2、主要特点
• MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
• 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的排序。
• 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
• 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
• Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
• MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
• Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
• Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
• Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
• GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
• MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
• MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
• MongoDB安装简单。

三、MongoDB 下载

1、MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center/community

注意:在 MongoDB 2.2 版本后已经不再支持 Windows XP 系统。最新版本也已经没有了 32 位系统的安装文件。
在这里插入图片描述
在这里插入图片描述
下载安装完成后,我们创建一个空间(文件夹)来存放mongodb的数据,建议在D盘或E盘下创建。
配置MongoDB 环境变量。

2、配置MongoDB 环境变量

在电脑高级设置里,设置系统环境变量。点开path目录,在后添加mongodb的下载路径即可(要到/bin),注意检查路径的最前面要有;和原有路径进行区分。

3、命令行下运行 MongoDB 服务器
在这里插入图片描述
启动成功后,最小化即可。不能关闭,否则服务将断开,导致无法连接。

4、连接 MongoDB(新开一个cmd任务管理器 )

命令行:mongo 连接本地mongodb服务
命令行:mongo 127.0.0.1:27017 连接远程,后跟远程服务IP和端口

5、基本的操作命令
a. 使用数据库、创建数据库
语法:use 数据库名(已存在则进入该数据库使用,不存在则创建)
b. 查看所有数据库:show dbs
要想显示我们刚创建的数据库,我们需要插入数据:db. 数据库名.insert({“name”:“mongodb”})
c. 删除数据库:db.dropDatabase()
d. 删除集合(相当与关系型数据库中的表):db.collection.drop()
Use mongodb
db.createCollection(“mongodb”)
show tables
db.mongodb.drop()
e. 创建集合:db.createCollection(name,options)
name:要创建的集合名称
options:可选参数,指定有关内存大小及索引的选项
f.查看已有集合:show collections或show table
g.插入数据:db.集合名称.insert({数据})
如:db. mongodb.insert({title: ‘MongoDB 教程’,
description: ‘MongoDB 是一个 Nosql 数据库’,
url: ‘http://www.runoob.com’,
tags: [‘mongodb’, ‘database’, ‘NoSQL’],
likes: 100
})
h. 查看已插入数据:db.mongodb.find()
db.mongodb.find({查询条件}) 类似于Mysql中where后条件
i. update() 方法
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
参数说明:
• query : update的查询条件,类似sql update查询内where后面的。
• update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
• upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
• multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
• writeConcern :可选,抛出异常的级别。
实例我们在集合 col 中插入如下数据:

db.col.insert({
title: ‘MongoDB 教程’,
description: ‘MongoDB 是一个 Nosql 数据库’,
by: ‘菜鸟教程’,
url: ‘http://www.runoob.com’,
tags: [‘mongodb’, ‘database’, ‘NoSQL’],
likes: 100
})
接着我们通过 update() 方法来更新标题(title):
db.col.update({‘title’:‘MongoDB 教程’},{$set:{‘title’:‘MongoDB’}})
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 }) # 输出信息
db.col.find().pretty()
{
“_id” : ObjectId(“56064f89ade2f21f36b03136”),
“title” : “MongoDB”,
“description” : “MongoDB 是一个 Nosql 数据库”,
“by” : “菜鸟教程”,
“url” : “http://www.runoob.com”,
“tags” : [
“mongodb”,
“database”,
“NoSQL”
],
“likes” : 100
}
在这里插入图片描述

j. pretty() 方法以格式化的方式来显示所有文档
find()条件中多个用逗号隔开,大于、小于、等于范围查询如下
在这里插入图片描述
k. Mongodb中and 和 or 联合使用:
类似常规 SQL 语句为: ‘where likes>50 AND (by = ‘菜鸟教程’ OR title = ‘MongoDB 教程’)’

db.col.find({“likes”: {$gt:50}, $or: [{“by”: “菜鸟教程”},{“title”: “MongoDB 教程”}]}).pretty()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值