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]]}}})
- 【mongoDB】mongoDB学习日记
- [MongoDB]MongoDB学习
- Mongodb 学习
- MongoDB学习
- mongoDB学习
- MongoDB学习
- mongodb 学习
- MongoDb学习
- mongodb学习
- MongoDB学习
- mongoDB学习
- mongodb学习
- MongoDB学习
- Mongodb学习
- 学习MongoDB
- mongoDB学习
- mongodb学习
- mongodb学习
- eclipse 快捷键大全
- 【面经笔记】TCP流量控制、阻塞控制
- QT学习篇(一) 添加动作
- Javaweb三大组件Servlet、Filter、Listener
- html基础标签
- MongoDB学习
- soap消息如何传送附件
- Web使用读写卡器
- 访问者模式--操作是操作,数据是数据
- jQuery选择器——层次选择器
- 详解build.gradle文件
- JVM学习笔记(3)-垃圾收集
- fabric-hello world
- 【Vertx】利用vertx实现websocket数据推送