MongoDB学习

来源:互联网 发布:windows 查看共享目录 编辑:程序博客网 时间:2024/06/07 04:02

一、mongo简介

1、MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
2、MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
3、特点:高性能、易部署、易使用,存储数据非常方便
**

二、安装

**
1、去官网下载安装包 ,地址为https://www.mongodb.com/

2、进入点击下载

这里写图片描述

3、选择版本

这里写图片描述

4、接下来是安装,建议安装到c盘或者d盘,我安装的是d盘,安装好路径如下
这里写图片描述

5、在此目录下新建一个文件夹名为data

6、然后进入mongo-bin目录下,在此处打开命令行,输入以下命令

mongod.exe --dbpath d:\install\data

7、配置环境变量,把D:\install\mongo配置到path中

8、然后打开命令窗口,输入以下命令来启动服务,mongod –dbpath D:\install\data

这里写图片描述

9、再打开一个cmd,输入mongo进行连接

这里写图片描述

三、常用命令

2、查看数据库命令
a)show dbs
3、切换数据库
a)use 数据库名字
b)如果数据库不存在那么创建一个
4、删除数据库
a)删除记录 db.qbd_conlection.remove({x:666})
b)删除表 db.qbd_conlection.drop()
c)删除数据库 先用use命令切换到此数据库,然后执行
db.dropDa tabase()命令
5、创建表
a)切换到数据库例如 use qbd
b)db.qbd_collection.insert({x:1})如果qbd_collection不存在那么会创建,然后把数据添加进去 ,这一种是隐士创建
c)db.createCollection("Account")显示创建
d)添加多条数据

 for(i=0;i<50;i++)db.qbd_conlection.insert({x:i})

6、查找数据
a)db.qbd_conlection.find()查找全部
b)db.qbd_conlection.find({x:1})查找{x:1}的(x=1的)
c)db.qbd_conlection.find().skip(3).limit(2).sort({x:1})先进性排序,然后跳过前三条数据然后查找2条
7、更新数据
a)db.qbd_conlection.update({x:0},{c:99}) 存在的两个问题
i.第一、如果这条数据不存在会出错
ii.第二、如果存在那么x和c会被修改 其他字段值会被修改为0
b)db.qbd_conlection.update({x:0},{c:99},true)如果记录不存在,则添加一条
c)db.qbd_conlection.update({x:99},{$set:{y:0}})修改指定属性字段的
d)db.qbd_conlection.update({x:1},{$set:{x:666}},false,true)综合以上的
8、创建索引
a)默认是_id索引
b)db.qbd_conlection.getIndexes()查看索引
c)单键索引(不会自动创建)db.qbd_conlection.ensureIndex({x:1})
d)多键索引
i.db.qbd_conlection.insert({x:[1,2,3,4,5]})当插入这条数据时,mongo会默认把x设置为多键索引
e)复合索引
i.db.qbd_conlection.ensureIndex({x:1,y:1});
ii.当使用{x:1,y:1}作为条件查询时
f)过期索引
i.在一段时间后会过期
ii.db.qbd_conlection.ensureIndex({time:1},{expireAfterSeconds:30}); 30秒后过期({time:1}为索引 必须是时间类型)
iii.该字段必须是时间类型不然不能被删除,不能使用时间戳,必须是ISDate或者ISDate数组
g)全文索引
i.db.articles.ensureIndex({key:"text"})key是字段 单键索引
ii.db.articles.ensureIndex({key_1:"text",key_2:”text”}) 多键索引
iii.db.articles.ensureIndex({“$**”:"text"}) 对所有字段创建一个索引
iv.db.articles.find({$text:{$search:"aa"}})查找含有aa的(不能查找a)
v.db.articles.find({$text:{$search:"aa bb"}})查找含有aa或者bb的三种组合
vi.db.articles.find({$text:{$search:"aa -bb"}})查找包含aa不包含bb的
vii.db.articles.find({$text:{$search:"\"aa\” \“bb\” \“cc\"}})查找即包含aa又包含bb还包含cc的字符串
h)全文索引相似度
i.db.articles.find({$text:{$search:"aa bb"}},{score:{$meta:”textScore”}})得分数搞得越相似
ii.db.articles.find({$text:{$search:"aa bb"}},{score:{$meta:”textScore”}}).sort({score:{$meta:”textScore”}})根据分数排序,分数高的在前面
i)地理索引
2D索引,地理平面索引 经度【-180,180】纬度【-90,90】
i.创建方式db.location.ensureIndex({"w":"2d"})
ii.$near 过滤 会返回100个离你最近的点 db.location.find({w:{$near:[1,1]}})
iii.用$maxDistance来限制距离范围 离1,1最近且范围不超过10的:db.location.find({w:{$near:[1,1],$maxDistance:10}})
iv.查询矩形内的点 采用 {$box:[[,],[,]]} 查询语句db.location.find({w:{$geoWithin:{$box:[[0,0],[3,3]]}}})
v.查询圆中的点 采用box {center:[[,],[]} 查询语句db.location.find({w:{$geoWithin:{$center:[[0,0],5]}}})
vi.查询多边形中的点 采用{$polygon:[[,],[,],[,]]} 可以有多个点 查询语句

db.location.find({w:{$geoWithin:{$polygon:[[0,0],[0,1],[2,5],[6,1]]}}})
原创粉丝点击