首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用MongoDB开发过程常见错误分析

本文主要讨论这几个问题: Mongo shell中使用大整数字面量 片键使用自增长字段 程序里游标循环迭代过程中进行长时间的操作 滥用数组类型 滥用upsert更新参数 错误的设计索引 错误的认为复制等于备份...1 Mongo shell中使用大整数字面量,但默认整数字面量类型却是双精度浮点数,导致丢失精度 问题描述: 通过mongo shell插入或更新一个大整数(长度约大于等于16位数字)时,例如: ?...所以当我们在mongo shell中直接使用整数字面量时,实际上它是以double表示的,而当这个整数字面量大约超过16位数字时,就可能发生有些整数无法精确表示的情况,只能使用一个接近能表示的整数来替代...因此当片键是自增长类型时,插入的数据实际上都是落在一个Chunk存储的范围内,导致所有写入请求都路由到这个Chunk所在的分片,从而导致这个节点成为写热点,写负载不能均衡的分担到集群中的多个分片节点,从而丧失了通过分片集群横向扩展写性能的意义...检查我们设计的索引是否有重复索引、无用索引,是否缺失索引。比如复合索引已经能覆盖某些单字段索引。业务查询调整等原因,有些索引已经不再使用。通过慢查询日志,发现有些查询没有索引,严重影响系统性能。

2.4K30

提问也是一门学问

小明:哪位大哥能帮忙看下这个问题吗?为什么数据还是不能插入? 小明:[一张图] 小白:有大佬在么?关于xx有人会么? 小明:[一张图] 或者 [一小段代码] 小明:这个为啥报错啊?...归更到底,是你不会提问,总是零散的提问、不愿一次性描述问题发生的场景、已经做过哪些排查等等。所以,才有了大家的各种猜测、推断,最终浪费了别人的时间,回答的可能却不是你想要的结果。...认真地思考,准备好你的问题。轻率的提问只能得到轻率的回答,或者压根没有。在提问时,你越是表现出在此前做过思考与努力去解决自己的问题,你越有可能得到真正的帮助。 注意别提错问题。...我的这段代码运行不了,谁能帮我看看啊! 明智的提问: 各位,我下面这段代码是这样写的,理论上运行的结果应该是xx,可是现在却运行不了。...我通过Debug调试也没有发现啥异常,有人能帮我看看或者给个思路么? 2.2 清楚表达你的问题 清楚、良好地表达你的问题非常重要。花点额外的精力斟酌一下提问字句,确保别人能够看得懂。

61820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySql 三大知识点——索引、锁、事务

    5、外键索引:只有InnoDB类型的表才可以使用外键索引,保证数据的一致性、完整性和实现级联操作。...MySql 的主键最好是自增的,如果使用 UUID 这种,每次插入都会调整 B+树,从而导致页分裂,严重影响性能。...锁机制 关于 Mysql 的锁,各种概念就会喷涌而出,事实上,锁有好几种维度,我们来解释一下。 1....默认的读操作,上锁吗? 默认是 MVCC 机制(“一致性非锁定读”)保证 RR 级别的隔离正确性,是不上锁的。...四个特性,最重要的就是一致性。而一致性由原子性,隔离性,持久性来保证。 原子性由 Undo log 保证。Undo Log 会保存每次变更之前的记录,从而在发生错误时进行回滚。

    88340

    MySql 三大知识点——索引、锁、事务

    5、外键索引:只有InnoDB类型的表才可以使用外键索引,保证数据的一致性、完整性和实现级联操作。...MySql 的主键最好是自增的,如果使用 UUID 这种,每次插入都会调整 B+树,从而导致页分裂,严重影响性能。...锁机制 关于 Mysql 的锁,各种概念就会喷涌而出,事实上,锁有好几种维度,我们来解释一下。 1....默认的读操作,上锁吗? 默认是 MVCC 机制(“一致性非锁定读”)保证 RR 级别的隔离正确性,是不上锁的。...四个特性,最重要的就是一致性。而一致性由原子性,隔离性,持久性来保证。 原子性由 Undo log 保证。Undo Log 会保存每次变更之前的记录,从而在发生错误时进行回滚。

    73920

    MySQL主键自增值为什么有“空洞”?

    values('a', 4); ERROR 1062 (23000): Duplicate entry 'a' for key 't1.uk_c1' insert ignore into insert方式插入数据在处理过程中发生主键传统等错误时候...,然后主键冲突,就对该主键的内容进行替换,如果唯一键冲突,唯一值所在行就会删除,重新插入新的行,如果都不冲突则正常插入数据。...,可是测试过程中发现插入失败的时候,自增列的自增值居然变大了。...原因很简单,用插入数据的流程来进行分析: 因为自增值的保存是在插入数据真正执行前完成的,因此就会出现这种问题了。 这个时候有人就会想了,可以把AUTO_INCREMENT值改回去吗?...,开启了一个事务,在插入的时候发生了事务的回滚,当回滚后再次插入数据,发现自增值又从出现了“空洞”,那么问题又来了,为什么在插入数据的时候发生了回滚,数据回滚了,自增值却没有回滚呢?

    2.3K20

    如何用 Python 脚本批量下载 Google 图像?

    有的下载图片,都是重复的。 学生告诉我,经验证,最简单有效的方法,是一张张手动点击下载…… 这显然不是正经办法。 痛点 渴望从 Google 图片库高效批量获得优质带标注图像,不会是个案。...这个大众痛点,真的没有人尝试解决吗? 今天,一个偶然的机会,我发现了一个特别棒的 Github 项目,叫做 google-images-download。 Github repo 链接在这里。...终端里面执行: googleimagesdownload -k "谭卓" -l 20 解释一下,这里的 -k 指的是 "keyword",也就是“关键词”,后面用双引号括起来要查找的关键词。...下面是执行过程: 执行完毕。 可以看到,下载过程中,发生了一个错误。 但程序依然锲而不舍,帮我们把下载流程运行完毕。 我们看看结果。...咱们打开下载后的目录 ~/Downloads/downloads/郝蕾 看看: 这回,你能分清楚她俩不?

    1.9K20

    vim 从嫌弃到依赖(23)——最后的闲扯

    工作中很少有用会用vim来做主力编辑器,现在有各种现代化的编程工具,像JB 全家桶、visual studio 系列。它们从上手难度和集成化程度来说,都做的比较好,离开vim也能编程。...在linux的终端中,vim算是标配,几乎每个linux服务器都会安装vim。那个时候我只会按 i 进入插入模式、按方向键移动光标。它对我来说就是一个linux上比记事本还麻烦的一个文本编辑器。...我希望的是有一个教程在实际使用中循序渐进的帮我掌握vim这些知识点,需要一个教程跟着它进行操作我就能理解并在实际中使用vim。我需要一个vim手册和实际使用的一个桥梁。...在写这一系列文章的过程中,我深刻体会到,在如今互联网环境中,一旦写出什么东西,这个东西马上就不属于你。当然这个并不是再说有人抄袭之类的。...我在更新这一系列文章的过程中也真心的希望得到反馈,得到关注,让我知道我写的这些破玩意还是有人看的,有人能从中获益,这些并不是我自己在这自说自话,自嗨,这些也并不是网络垃圾。

    39030

    FW:提问的智慧(How To Ask Questions The Smart Way) 大众硬件Linux大众软件软件测试搜索引擎

    因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能解释一下X吗?”更好。如果你的代码不能工作,问问它有什么地方不对,比要求别人替你修改要明智得多。...你可以要求给点提示,但别要求得到完整的解决方案。 ---------------- 去除无意义的疑问 ---------------- 别用无意义的话结束提问,例如“有人能帮我吗?”...问题:我的程序/配置/SQL申明没有用 问题:我的Windows有问题,你能帮我吗? 问题:我在安装Linux(或者X)时有问题,你能帮我吗?...在看到这类问题的时候,我的反应通常不外如下三种: 1. 你还有什么要补充的吗? 2. 真糟糕,希望你能搞定。 3. 这跟我有什么鸟相关? 提问:我的Windows有问题,你能帮我吗?...我读过了FAQ,但里面没有提到跟Nulix有关的问题。这是我编译过程的记录,我有什么做得不对的地方吗?

    64420

    MySQL为什么会死锁?

    1️⃣ 死锁概述 在正式开始今天的讲解之前,我们先回顾一下死锁的相关知识 死锁是指两个或者两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而导致的一种阻塞的现象,如果没有外力,他们将一直等待下去...: 正在上传…重新上传取消 现如今球队招募一个二传手和一个副攻手,也就是position_no = 6 和 position_no = 7的人,但是在招募之前需要确认这个位置是否有人,球队的两个经理往表中插入数据的时候发生如下的事情...) values(6,研磨) insert into team(position_no, user_name) values(7,列夫) 首先解释一下为什么使用的是当前读,因为如果是快照读就会出现的情况为...7 for update语句属于非唯一索引的等值查询,会加上(7,+∞]的临键锁 两个事务都持有范围为(6,+∞]的临键锁,而接下来的插入操作会去获取插入意向锁,插入意向锁与临键锁互斥,因此获取插入意向锁需要对方的事务的临键锁释放...,设置的方法为:innodb_deadlock_detect = on即可 在业务层面,我们在处理业务逻辑的时候,主动的去寻找死锁存在的可能性,从根源解决问题,并加以修正,比如如果是防止订单号重复,也就是防止查重

    1.2K20

    物联通WMS为企业提供完善的仓储物流解决方案

    仓储管理是企业供应链管理过程中一个非常重要的环节!...②现在:通过WMS货位及商品条码化管理,实现拣货过程中匹配存放货位及商品条码,采取手持终端PDA扫描条码拣货时,系统自动会根据单据中是否有该商品及数量多与少进行报警提示,从而减少多发、漏发、错发问题的产生...,盘点结束后将表格交给文员录单,整个过程中不仅抄单错误时有发生,而且文员再次加班录单耗时耗力现在:针对不同时段的盘点需求可以采取不同模式的盘点方式,如动碰盘点:系统自动将指定时间段内有库存变化的商品及货位列入盘点计划...月末只需查询相应报表即可一键得出整月数据,相比之前最少节省半个文员9、库存商品价值无法分析WMS根据库存商品数量和价值将商品分为ABC类别;实现A类严格控制B类适度控制C类宽松控制的管理。...:通过数据大屏展示各个岗位工作情况,将数据量化并体现到所有人的面前,效率排名体现工作价值及绩效,从而提高每个人的工作积极性,并起到仓库监督作用。

    3.4K50

    你《提问的智慧+如何有效地报告Bug》了吗?

    因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能解释一下X吗?”更好。如果你的代码不能工作,问问它有什么地方不对,比要求别人替你修改要明智得多。...你可以要求给点提示,但别要求得到完整的解决方案。 ---------------- 去除无意义的疑问 ---------------- 别用无意义的话结束提问,例如“有人能帮我吗?”...问题:我的程序/配置/SQL申明没有用 问题:我的Windows有问题,你能帮我吗? 问题:我在安装Linux(或者X)时有问题,你能帮我吗?...在看到这问题的时候,我的反应通常不外如下三种: 1. 你还有什么要补充的吗? 2. 真糟糕,希望你能搞定。 3. 这跟我有什么鸟相关? 提问:我的Windows有问题,你能帮我吗?...我读过了FAQ,但里面没有提到跟Nulix有关的问题。这是我编译过程的记录,我有什么做得不对的地方吗?

    82230

    密码怎么设才好?一条标准就够了

    如果你比较喜欢问个究竟,咱们就来解释一下。 这句话看似简单武断,实际上包括了以下3个方面的含义: 密码不能有意义; 组成密码的各部分不能有意义; 一个密码不能重复(或稍作改变)用于多个登录。...大错特错。 ? 道高一尺魔高一丈,这时候攻击者的武器又改善了。 人家改玩儿大数据了。 具体点儿说,叫做“撞库”。 从前破解密码,是一个一个网站来。现在不是了,是一堆一堆地做。...破解者能不断升级自己的工具,我们为什么不行?好的工具可以帮我们设定随机复杂密码,加密高强度记录保存,而且有的还可以帮我们填写用户名和密码。 而你,只需要记一个密码——进入你密码库的主密码——就够了。...请上网自行搜索密码管理工具,免费的和收费的都有。我这里就不介绍了,免得有广告嫌疑。记住免费的一定要下载用的人多的,收费的一定要用价格高的。原因不解释。 :-P 答疑时间 有人对此很不屑——至于吗?...设置好的密码难道真的不值得做吗?

    72650

    当AI遇到Excel

    但是,坚持学下去,并且成功写出代码应用到工作中的人,大有人在。 他们在自己的公司,一定都是“表神”般的存在。 表神的快乐你能想象吗? 你想象不到。...但是,从基础语法到实际写代码的升级过程中,确实存在困难。 我觉得主要的原因还是基础不牢固以及样例太少。 理解并不代表可以灵活运用。...这么说吧,如果咱们的目标是能熟练运用VBA解决工作中的一些繁琐重复的任务,大幅提高效率,有了ChatGPT以后,只要你花几个小时进行基础知识的学习,就可以直接开始上手了。这在以前,是完全不可想象的。...通过优化你的问题,哪怕重复你的问题,来提高获得满意代码的概率。 比如刚才这个批量插入图片的例子,我隔了几分钟再问了一次。 好家伙,给我的代码,居然变量名用的是中文。 看来中文的地位一直在提高啊。...并且在以往的文章中,多次分享了这些心得。 今天,多位老师合力完成的《用ChatGPT和VBA一键搞定Excel》就是其中的成果之一。

    33020

    MongoDB权威指南学习笔记(1)--基础知识与对文档的增删改查

    Mongo 基础知识与对文档的增删改查 基础知识 文档 文档就是键值对的一个有序集,例如 {"greeting":"hello"} 文档中的值可以时多种不同的数据类型;文档中的键时字符串,但有少数例外情况...数据库 数据库就是多个集合,一个mongo实例可以承载多个数据库,每个数据库可以有多个集合,每个数据库都有独立的权限。...([{"_id":0},{"_id":1},{"_id":2}]) 不能在单词请求中将多个文档批量插入多个集合中 如果在执行批量插入的过程中有一个文档插入失败,那么在该文档之前的所有文档都会成功插入...,这个文档之后的文档都会插入失败 插入文档的_id不能重复 在批量插入遇到错误时,可以使用continueOnError选项忽略错误并继续执行后续插入,但在shell中并不支持,在驱动中可以执行 插入校验...不能只将slice或者sort和push配合使用,且必须使用each 将数组作为数据集使用 如果想将数组作为数据集使用,保证数组内的元素不会重复。可以使用$ne实现。

    5.6K10

    字节跳动真的太懂程序员了!

    “一键Apply”功能简单来说,就是可以一键将 AI 生成的代码自动插入到项目对应的文件位置,同时会将新生成的代码与原代码进行比对,形成差异(Diff),提醒编码者针对新代码【采纳】或者【拒绝】,无需手动打开文件...而有了“一键Apply”功能的加成之后,上面这些 AI 功能生成的代码都可以通过“一键Apply”把代码自动插入到项目对应的文件位置,这属于是如虎添翼了。...错误修复,一键Apply 项目开发过程中,遇到最让人头疼的就是莫名其妙的代码报错,有时候为了解决代码报错的问题,所付出的时间,可能都比开发这个功能时间要长。...代码注释,一键Apply 写好了代码,怎么能少的了写注释呢!不写注释,不仅你同事看不懂,未来 3 个月后的你也看不懂。...让 AI 编程工具成为我们提升工作效率的小助手,释放一些重复性的工作,让我们更关注去攻破工作中复杂的业务场景,同时增加开发过程中的幸福感,而这也正是这些 AI 编程工具所存在的意义。

    11810

    MongoDB的使用

    开发者能尝试大量的数据模型,从中选一个最好的。 1.2 易扩展性 应用程序数据集的大小正在以不可思议的速度增长。...#2、文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。 #3、MongoDB区分类型和大小写。 #4、MongoDB的文档不能有重复的键。...另外,中间的几位数字也会变化(要是在创建过程中停顿几秒)。 这是ObjectId的创建方式导致的,如上图 时间戳单位为秒,与随后5个字节组合起来,提供了秒级的唯一性。...最后3个字节是一个自动增加的 计数器。确保相同进程的同一秒产生的 ObjectId也是不一样的。 #2、自动生成_id 如果插入文档时没有"_id"键,系统会自帮你创建 一个。...#1、没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变 #2、插入单条 user0={ "name":"zgh", "age":10, 'hobbies

    3.7K40

    《提问的智慧》

    黑客较愿意回答那些能帮助到许多人的问题。 ​ 可以理解的是,老练的黑客和一些热门软件的作者正在接受过多的错发信息。...通常比问你能解释一下 X 吗?更好。如果你的代码不能运作,通常请别人看看哪里有问题,比要求别人替你改正要明智得多。...尽管黑客们会看出来,但一些有经验的用户也许仍会给你一些提示。 去掉无意义的提问句 ​ 避免用无意义的话结束提问,例如有人能帮我吗?或者这有答案吗?。 ​...在看到这类问题的时候,我的反应通常不外如下三种 你还有什么要补充的吗? 真糟糕,希望你能搞定。 这关我屁事? 问题:我的 Windows 电脑有问题,你能帮我吗?...某黑客对这类问题的回答通常是:好的,还要帮你拍拍背和换尿布吗?,然后按下删除键。 聪明问题: 我在 S2464 主机板上试过了 X 、 Y 和 Z ,但没什么作用,我又试了 A 、 B 和 C 。

    51830

    mongodb存储的数据类型(redis存储数据类型)

    以下划线”_”开头的键是保留的(不是严格要求的)。 MongoDB的文档不能有重复的键。 MongoDB不但区分类型,而且区分大小写。...集合是动态模式的,也就意味着集合没有固定的结构,集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。...随之而来的一个问题是:既然没有必要区分不同类型文档的模式,一个数据库还有必要使用多个集合吗? 这里的不区分仅仅是物理结构的不区分,但实际开发中由于业务的分区,会产生多个逻辑集合单元。...MongDB能理解数组结构,并能深入其中构建索引,执行查询或更新操作。...多个集合之间_id可以重复(与关系数据库表的主键一样)。

    3.7K11
    领券