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 等关系型数据库一样.其实可以这样说说,索引 ...
随机推荐
- [Unit Test] Unit Test Brief Introduction
Levels of Testing- Acceptance- Performance- Functional- Integration- Unit Why Unit Testing- Feedback ...
- <7>Cocos Creator 节点 cc.Node
1.简介 节点(cc.Node)是渲染的必要组成部分.所有需要在游戏场景中显示的内容都必须是节点或者依附于节点之上.节点负责控制显示内容的位置.大小.旋转.缩放.颜色等信息. 2.节点属性 1: na ...
- 找不到System.Web.Optimization命名空间
找不到System.Web.Optimization命名空间,无法完成BundleConfig.cs内容的添加. 解决方法如下:打开程序包管理控制台,在控制台中输入:Install-PackageMi ...
- html5-css列表和表格
td{ /*width: 150px; height: 60px;*/ padding: 10px; text-align: center;} table{ width ...
- Sitecore 9有什么新功能
在这个新版本中有很多值得爱的东西.每个人都会有自己喜欢的新功能,但是,我想与你分享一些地雷: xConnect 正如我们在Sitecore的官方Sitecore 9新闻稿中所见的那样,“新的xConn ...
- caffe生成voc格式lmdb
要训练ssd基本都是在liu wei框架下改,生成lmdb这一关照葫芦画瓢总遇坑,记录之: 1. labelmap_voc.prototxt要根据自己的分类修改,比如人脸检测改成这样: item { ...
- 设计模式之Prototype(原型)(转)
定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传 ...
- linux常用命令:pwd 命令
Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录.在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...
- 面试题-JAVA算法题
1.编写一个程序,输入n,求n!(用递归的方式实现). public static long fac(int n){ if(n<=0) return 0; else if(n==1) retur ...
- [转载]C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
原文出处:https://www.cnblogs.com/wuhuisheng/archive/2011/03/23/1992652.html 验证电话号码的主要代码如下: public bool I ...