索引

以提升查询速度

测试:插入十万条数据到数据库中

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 创建索引及其他的更多相关文章

  1. linux环境给mongodb创建索引

    首先我们来了解索引,如果有基础的可以直接看最后面的操作. 可参照 DoNotStop 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/u013725455/artic ...

  2. 关于mongodb创建索引的一些经验总结(转)

    查看语句执行计划: explain() 在mongodb3+版本后输出格式发生改变: 详情参见:https://docs.mongodb.com/v3.0/reference/method/curso ...

  3. MongoDB 创建索引的语法

    1.为普通字段添加索引,并且为索引命名 db.集合名.createIndex( {"字段名": 1 },{"name":'idx_字段名'}) 说明: (1)索 ...

  4. Mongodb 创建索引

    db.getCollection('ct_project').ensureIndex({'pro_code':1})  创建索引 db.getCollection('ct_project').ensu ...

  5. MongoDB创建索引(不锁库方法)

    db.collection.createIndex( { a: 1 }, { background: true } )https://docs.mongodb.org/manual/tutorial/ ...

  6. 上mongodb创建一些吸取的经验教训指数

    想来接触mongodb它已经快一年了,对于其指数已经积累了很多的经验,知识,以这个夜黑风高的优势,放mongodb总结一番吧. 一,索引介绍 mongodb具有两类索引,分别为单键索引和复合索引. 1 ...

  7. MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划

    这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...

  8. mongodb 创建LBS位置索引

    <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver< ...

  9. MongoDB 创建基础索引、组合索引、唯一索引以及优化

    一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...

随机推荐

  1. notepad使用列选

    列选有两种方法: 1.按住ALT + 鼠标从某点按住开始向下或向上拖动. 2.按住ALT+SHIFT+上下方向键. 列编辑: 1.ALT+C 2.插入相同文本还是自增数字

  2. X.509证书及CeritificationPath及PKCS

    X.509,数字证书标准.X.509用在包含SSL/TLS在内的很多网络协议中,证书内部包含一个public key和一个identity(hostname,organization等). X.509 ...

  3. .net 缓存

    缓存有很多实现方法,所有这些可以被分为两类,基于内存的缓存和基于磁盘的缓存: 1.  内存驻留缓存——包含在内存中临时存储数据的所有实现方法,通常在以下情况下使用: a)       应用程序频繁使用 ...

  4. python 修改xml文档 ing

    原xml文件 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid> ...

  5. TCP客户端图片上传服务端保存本地示例

    //TCP客户端public class TCPClient { public static void main(String[] args)throws IOException { Socket s ...

  6. 阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除

    阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除 4. ECS 实例释放后,自定义镜像是否还存在? 存在. 5. ECS 实例释放后,快照是否还存在? 保留手动快照,清除自动 ...

  7. IP代理(proxies参数)

    在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网站信息的强度和采集速度太大,给对方服务器带去了太多的压力. 如果你一直用同一个代理ip爬取这个网页,很有可能ip会被禁止访问 ...

  8. 计算概论(A)/基础编程练习2(8题)/8:1的个数

    #include<stdio.h> int main() { ; // 存储测试数据的二进制形式中1的个数 int bian[N]; // 输入十进制整数N 表示N行测试数据 scanf( ...

  9. shell 冒号

    : ${TEST_LOOP:='1'} 如果不在前面加上:(冒号)命令,那么就会把${TEST_LOOP:='1'}本身当做一个命令来执行,报错是肯定的. [root@node56 ~]# : abc ...

  10. java提供的线程池的使用

    应用场景,比如你有个业务模块,非常耗时,并且还需要重复调用5次. 如果你写个for循环调用5次,调用一次3秒,那么5次就15秒,不是很友好. 这时,如果你用线程池就方便了,多线程跑,都跑完,收集到结果 ...