MongoDB 创建索引及其他
索引
以提升查询速度
测试:插入十万条数据到数据库中
for(i=0;i<100000;i++){db.t255.insert({name:'test'+i,age:i})}
db.t1.find({name:'test100000'})
db.t1.find({name:'test100000'}).explain('executionStats') 可以查看查询的时间
建立索引之后对比:
语法:db.集合.ensureIndex({属性:1}),1表示升序,-1表示降序
具体操作: db.集合.ensureIndex({name:1})
db.t1.find({name:'test100000'}.explain('executionStats'))
在默认情况下索引字段的值可以相同
创建唯一索引(索引的值是唯一的):
db.t1.ensureIndex({"name":1},{"unique":true})
建立联合索引(什么时候需要联合索引)
db.t1.ensureIndex({name:1,age:1})
查看当前集合的所有索引:
db.t1.getIndexes()
删除索引:
db.t1.dropIndex('索引名称')
mongodb mysql redis的区别和使用场景
mysql是关系型数据库,支持事务 mongodb,redis非关系型数据库,不支持事务 mysql mongodb redis的使用根据如何方便进行选择 希望速度快的时候,选择mongodb或者是redis 数据量过大的时候,选择频繁使用的数据存入redis,其他的存入mongodb mongodb不用提前建表建数据库,使用方便,字段数量不确定的时候使用mongodb 后续需要用到数据之间的关系,此时考虑mysql
爬虫数据去重 实现增量式爬虫
使用数据库建立关键字段(一个或多个)建立索引进行去重
根据url地址进行去重
使用场景
url地址对应的数据不会变的情况下,url地址能够唯一判别一个条数据的情况
思路
url存在redis中
拿到url地址,判断ur1在redis的url的集合中是否存在
存在:说明ur1已经被请求过,不再请求
不存在:ur地址没有被请求过,请求,把该ur1存入redis的集合中
布隆过滤器
使用多个加密算法加密ur1地址,得到多个值
往对应值的位置把结果设置为1
新来一个url地址,一样通过加密算法生成多个值
如果对应位置的值全为1,说明这个ur地址已经抓过
否则没有抓过,就把对应位置的值设置为1
根据数据本身进行去重
选择特定的字段,使用加密算法(md5,sha1)将字段进行加密,生成字符串,存入redis的集合中
后续新来一条数据,同样的方法进行加密,如果得到的字符串在redis中存在,说明数据存在,对数据进行更新,否则说明数据不存在,直接插入
MongoDB 创建索引及其他的更多相关文章
- linux环境给mongodb创建索引
首先我们来了解索引,如果有基础的可以直接看最后面的操作. 可参照 DoNotStop 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/u013725455/artic ...
- 关于mongodb创建索引的一些经验总结(转)
查看语句执行计划: explain() 在mongodb3+版本后输出格式发生改变: 详情参见:https://docs.mongodb.com/v3.0/reference/method/curso ...
- MongoDB 创建索引的语法
1.为普通字段添加索引,并且为索引命名 db.集合名.createIndex( {"字段名": 1 },{"name":'idx_字段名'}) 说明: (1)索 ...
- Mongodb 创建索引
db.getCollection('ct_project').ensureIndex({'pro_code':1}) 创建索引 db.getCollection('ct_project').ensu ...
- MongoDB创建索引(不锁库方法)
db.collection.createIndex( { a: 1 }, { background: true } )https://docs.mongodb.org/manual/tutorial/ ...
- 上mongodb创建一些吸取的经验教训指数
想来接触mongodb它已经快一年了,对于其指数已经积累了很多的经验,知识,以这个夜黑风高的优势,放mongodb总结一番吧. 一,索引介绍 mongodb具有两类索引,分别为单键索引和复合索引. 1 ...
- MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...
- mongodb 创建LBS位置索引
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver< ...
- MongoDB 创建基础索引、组合索引、唯一索引以及优化
一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...
随机推荐
- notepad去掉空行
选择替换,把查找模式设置为正则表达式,在查找框中自己输入 ^\s+ ,替换框留空,点“全部替换”,即可(先全选).注意:不要复制我的,自己输入,且用英文格式输入.
- [10]Windows内核情景分析---中断处理
中断处理 每个cpu有一张中断表,简称IDT. IDT的整体布局:[异常->空白->5系->硬](推荐采用7字口诀的方式重点记忆) 异常:前20个表项存放着各个异常的描述符(IDT表 ...
- Yii2 数据缓存/片段缓存/页面缓存/Http缓存
- Python - 2. Built-in Collection Data Types
From: http://interactivepython.org/courselib/static/pythonds/Introduction/GettingStartedwithData.htm ...
- ReactiveCocoa(I)
ReactiveCocoa常见类 1. RAC中最核心的类RACSiganl: RACSiganl:信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据 解析: 信号类 ...
- eclipse xml 文件添加注解快捷键
eclipse xml 文件注解快捷键: <!-- --> Ctrl + shift + / 添加注解 Ctrl + shift + \ 取消注解
- Linux基础命令---验证组文件grpck
grpck grpck指令可以验证组文件“/etc/group”和“/etc/gshadow”的完整性.检查的内容包括:正确的字段数.唯一有效的组名称.有效的组标识符.成员和管理员的有效列表.“/et ...
- nodejs typescript怎么发送get、post请求,如何获取网易云通信token
nodejs typescript怎么发送get.post请求,如何获取网易云通信token yarn add jshashesyarn add superagent检查语法yarn lint==== ...
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...
- @Transactional noRollbackFor
网上查资料看的也是云里雾里的. 比如说: @Transactional(noRollbackFor=ProcessException.class) 那他是什么意思呢? 一句话,在你声明的这个事物里如果 ...