索引

以提升查询速度

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

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. unity之UI

    1.Vector3坐标 2.地球,月球,太阳的旋转关系 using System.Collections; using System.Collections.Generic; using UnityE ...

  2. SSH异常处理(一)

    Could not locate getter method for property [com.test_SSH.Employee#createTime] 这个异常是实体类没有映射到对应的.hbm. ...

  3. Service Fabric本地开发部署修改数据目录

    以修改5节点非安全模式为例: 在C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\NonSecure\FiveNode目录下,修改 ...

  4. https加密过程

    https加密完整过程 step1: “客户”向服务端发送一个通信请求 “客户”->“服务器”:你好 step2: “服务器”向客户发送自己的数字证书.证书中有一个公钥用来加密信息,私钥由“服务 ...

  5. 认识ZTree

    ZTree基本知识 zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 一.最简单的树(标准的json数据): 1.set ...

  6. 【Hadoop学习之一】Hadoop介绍

    一.概念 Hadoop是一个能够对大量数据进行分布式处理的软件框架,充分利用集群的威力进行高速运算和存储. 二.主要模块Hadoop Common:支持其他Hadoop模块的常用实用程序.Hadoop ...

  7. Linux QtCreator 编译报错:No rule to make target '.../***' needed by '***.o'.stop

    Linux QtCreator 编译报错:No rule to make target 'mainwindow.cpp'  needed by  'mainwindow.o'.stop [1]解决方案 ...

  8. flask 处理表单数据

    处理表单数据 表单数据的处理涉及很多内容,从获取数据到保存数据大致有以下步骤: 1.  解析请求,获取表单数据 2.  对数据进行必要的转换,比如讲勾选框的值转换成python的布尔值 3.  验证数 ...

  9. word2vec原理知识铺垫

    word2vec: 词向量计算工具====>训练结果 词向量(word embedding) 可以很好的度量词与词的相似性,word2vec为浅层神经网络 *值得注意的是,word2vec是计算 ...

  10. AELF(ELF)区块链项目介绍

    AELF(ELF)区块链项目介绍,Aelf在交易所上的名称是ELF,最近涨了不少了,可以长期关注逢低建仓,根据自身情况可以适当轻仓配置点.AELF总结下来就是希望打造一个B2B的区块链开放式OS系统. ...