索引

以提升查询速度

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

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. hbase-java-api002(flush)

    package api; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apa ...

  2. hdu1762 树的上的查询

    2015-10-07 20:44:42 题意问的是给了一颗树,然后又1000000次查询u,v,问不在树路径上的点的编号最小值,以1为根 建这颗树,然后在同一棵子树中的点子让就输出1 否则我们记录每个 ...

  3. unity3D客户端框架

    unity3D客户端框架  博客

  4. spring4.0.0 源码导入eclipse(sts)

    其余步骤请见:http://www.cnblogs.com/xiluhua/p/7450972.html 执行 gradle eclipse -x :eclipse 报错: 解决办法: 找到 行,注释 ...

  5. 输入输出无依赖型函数的GroovySpock单测模板的自动生成工具(上)

    目标 在<使用Groovy+Spock轻松写出更简洁的单测> 一文中,讲解了如何使用 Groovy + Spock 写出简洁易懂的单测. 对于相对简单的无外部服务依赖型函数,通常可以使用 ...

  6. MQ(转)

    1. 到底什么时候该使用MQ? 1). 典型场景一:数据驱动的任务依赖 采用MQ的优点是: a. 不需要预留buffer,上游任务执行完,下游任务总会在第一时间被执行 b. 依赖多个任务,被多个任务依 ...

  7. margin、padding、border区分

    margin 是设置两个标签的间隔,也就是距离: padding 这个是比如一个p标签,它是100px*100px,我们使用的时候p标签的文字是贴着p标签的最左侧的,想要它的文字距离边界远一点,好看一 ...

  8. API gateway 之 kong 安装

    kong安装: https://getkong.org/install/centos/ 下载指定版本rpm: wget https://bintray.com/kong/kong-community- ...

  9. 关于web.xml中配置Spring字符编码过滤器以解决中文乱码的问题

    当出现中文乱码问题,Spring中可以利用CharacterEncodingFilter过滤器解决,如下代码所示: <!-- Spring字符编码过滤器:解决中文乱码问题 --> < ...

  10. ES6知识整理(5)--对象的扩展

    个人开这个公众号的初心是为了积累知识,因此并没有做什么推广,再说自己也不知道怎么推广,推广之后又能干些什么.已经将近10天没发文章了,虽然每天都加班,但也不会一点时间都没有,有时还是会懒癌发作不想学习 ...