花一点时间大致了解了一下MongDB的知识 和基本概念,现在做一个记录
1、什么是MongoDB
MongoDB 是一个跨平台的,面向文档
的数据库,是当前 NoSQL 数据库产品中最热门 的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存 储比较复杂的数据类型。
2、MongoDB的特点
MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。
具体特点总结如下:
(1)面向集合存储,易于存储对象类型的数据
(2)模式自由
(3)支持动态查询
(4)支持完全索引,包含内部对象
(5)支持复制和故障恢复
(6)使用高效的二进制数据存储,包括大型对象(如视频等)
(7)自动处理碎片,以支持云计算层次的扩展性
(8)支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl 及 C++语言的驱动程
序,社区中也提供了对 Erlang 及.NET 等平台的驱动程序
(9) 文件存储格式为 BSON(一种 JSON 的扩展)
3、MongoDB体系结构
MongoDB 的逻辑结构是一种层次结构。主要由:文档(document)
、集合(collection)
、数据库(database)
这三部分组成的。逻辑结构是面
向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。
(1)MongoDB 的文档(document),相当于关系数据库中的一行记录。
(2)多个文档组成一个集合(collection),相当于关系数据库的表。
(3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。
(4)一个 MongoDB 实例支持多个
数据库(database)。
文档(document)、集合(collection)、数据库(database)
的层次结构如下图:
对应关系如下:
MongoDb | 关系型数据库Mysq |
---|---|
数据库(databases) | 数据库(databases) |
集合(collections) | 表(table) |
文档(document) | 行(row) |
4、常用的数据类型
1、布尔型
{"a":true}
2、null用来表示空值或者不存在的字段
{"a":null}
3、数值型、默认是使用64位的浮点类型
//这里的3其实是浮点类型
{"a":3}
//使用Number("3")显示声明是int类型
{"x":NumberInt("3")}
//使用NumberLong("3")声明为long类型
4、日期类型
{"x":new Date()}
5、字符串
{"a":"happy"}
6、数组
{"a":["jack","mike"]}
7、嵌套
{"a":{"b":"c"}}
安装MongoDB
安装步骤,非常简单 直接下一步下一步,安装完成之后配置环境变量就可以用了。进入MongoDb
安装之后的目录
环境变量配置好了之后进入cmd窗口
1、第一步服务端命令开启服务:
// 指定数据文件夹 并且开启服务(之前要先创建一个文件)
mongod --dbpath=d\tempdata
2、客户端命令连接服务
再次打开一个cmd窗口(第一个窗口不要关闭)
输入命令:
//可以通过 --prot指定端口 默认27017
mongo
默认就连上了一个test
数据库
创建一个新的数据库,并切换过去
输入use mydb
回车
> use mydb
switched to db mydb
>
1、添加数据
db.集合名称.insert(数据)
注意:mongdo的主键必须设置为_id
执行下面的语句 ,往数据库中插入数据(创建了一个mycollecion集合)
db.mycollection.insert({"_id": "001","mobile": "123456", "nickname": "钢铁侠", "sex": "男", "interest": "我喜欢泡妞","fans":NumberInt(2020)});
db.mycollection.insert({"_id": "002","mobile": "123456", "nickname": "蜘蛛侠", "sex": "男", "interest": "我喜欢飞来飞去"},"fans":NumberInt(2030));
db.mycollection.insert({"_id": "003","mobile": "123456", "nickname": "绿巨人", "sex": "男", "interest": "我喜欢生气"},"fans":NumberInt(2040));
db.mycollection.insert({"_id": "004","mobile": "123456", "nickname": "鹰眼", "sex": "男", "interest": "我喜欢射箭"},"fans":NumberInt(2050));
db.mycollection.insert({"_id": "005","mobile": "123456","nickname": "美国队长", "sex": "男", "interest": "我喜欢健身"},"fans":NumberInt(2060));
db.mycollection.insert({"_id": "006","mobile": "123456", "nickname": "雷神", "sex": "男", "interest": "我喜欢玩锤子"},"fans":NumberInt(2070));
2、查找所有数据
db.集合名称.find()
> db.mycollection.find();
{ "_id" : "001", "mobile" : "123456","nickname" : "钢铁侠", "sex" : "男", "interest" : "我喜欢泡妞" ,"fans":2020}
{ "_id" : "002", "mobile" : "123456","nickname" : "蜘蛛侠", "sex" : "男", "interest" : "我喜欢飞来飞去","fans":2030 }
{ "_id" : "003", "mobile" : "123456", "nickname" : "绿巨人", "sex" : "男", "interest" : "我喜欢生气" ,"fans":2040}
{ "_id" : "004", "mobile" : "123456", "nickname" : "鹰眼", "sex" : "男", "interest" : "我喜欢射箭" ,"fans":2050}
{ "_id" : "005", "mobile" : "123456", "nickname" : "美国队长", "sex" : "男","interest" : "我喜欢健身","fans":2060 }
{ "_id" : "006", "mobile" : "123456", "nickname" : "雷神", "sex" : "男", "interest" : "我喜欢玩锤子","fans":2070 }
>
**3、按条件查找 **
db.集合名称.find(查询条件)
查询_id为003的数据
db.mycollection.find({_id:“003”})
> db.mycollection.find({_id:"003"});
{ "_id" : "003", "mobile" : "123456", "nickname" : "绿巨人", "sex" : "男", "interest" : "我喜欢生气","fans":2040 }
>
4、更新文档
db.集合名称.update({},{}).
里面的第个json是搜索条件表名要更新哪些数据
第二个代表是要进行更新的操作
//更新003号的 insterest为 我喜欢打架
db.mycollection.update({_id:“003”},{$set:{interest:“我喜欢打架”}});
> db.mycollection.update({_id:"003"},{$set:{interest:"我喜欢打架"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.mycollection.find({_id:"003"}); "}});
{ "_id" : "003", "mobile" : "123456","nickname" : "绿巨人", "sex" : "男", "interest" : "我喜欢打架","fans":2040 }
>
5、删除数据
db.集合名称.remove({})
移除nickname=緑巨人的数据
db.mycollection.remove({nickname:“绿巨人”})
> db.mycollection.remove({nickname:"绿巨人"});
WriteResult({ "nRemoved" : 1 })
>
6、统计数量
*db.集合名称.count({})
{}填写统计数据的条件
例如:查询fans为2020的条数
db.mycollection.count({fans:2020});
> db.mycollection.count({fans:2020});
1
>
7、列值增长
**db.集合名称.update({},{KaTeX parse error: Expected 'EOF', got '}' at position 7: inr:{}}̲)** 例如:id为001的f…inc:{fans:NumberInt(1)}} );
> db.mycollection.update({_id:"001"},{$inc:{fans:NumberInt(1)}} );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.mycollection.find({_id:"001"});
{ "_id" : "001", "mobile" : "123456", "nickname" : "钢铁侠", "sex" : "男", "interest" : "我喜欢泡妞"
, "fans" : 2021 }
** 8 查询条件 大于 小于**
db.集合名称.find({ “field” : { $gt: value }}) // 大于: field > value
db.集合名称.find({ “field” : { $lt: value }}) // 小于: field < value
db.集合名称.find({ “field” : { $gte: value }}) // 大于等于: field >= value
db.集合名称.find({ “field” : { $lte: value }}) // 小于等于: field <= value
db.集合名称.find({ “field” : { $ne: value }}) // 不等于: field != value
例如:查询fans小于2040的数据
> db.mycollection.find({fans:{$gt:2040}});
{ "_id" : "004", "mobile" : "123456", "nickname" : "鹰眼", "sex" : "男", "interest" : "我喜欢射箭""fans" : 2050 }
{ "_id" : "005", "mobile" : "123456", "nickname" : "美国队长", "sex" : "男", "interest" : "我喜欢健身", "fans" : 2060 }
{ "_id" : "006", "mobile" : "123456", "nickname" : "雷神", "sex" : "男", "interest" : "我喜欢玩锤子, "fans" : 2070 }
>