加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

开始使用MongoDB之前应该知道的14件事

发布时间:2018-11-22 19:32:06 所属栏目:编程 来源:用户1914672199
导读:本文要点 纵然MongoDB没有逼迫要求,计一律个模式照旧至关重要。 相同地,在计划模式及会见模式时计划好索引。 停止大工具,尤其是大数组。 审慎看待MongoDB的配置,尤其是关乎安详和不变性时。 MongoDB没有查询优化器,因此,对付怎样布置查询操纵的次序

Lookup的成果和SQL连系查询相同。为了得到精采的机能,作为外键的键值上必要有索引。这并不明明,由于其行使并没有在explain()中陈诉。这些索引并不包括在explain()记录的索引里,那些索引是供管道操纵符$match、$sort呈此刻管道开始时行使的。此刻,索引可以包围聚合管道的任何阶段。

不行使多条更新

db.collection.update()要领用于修改一个已存在文档的一部门或所有,可能是整个替代一个已存在的文档,这取决于你提供的更新参数。除非你配置multi参数,更新匹配查询前提的全部文档,不然它不会更新荟萃里的全部文档。这一点不是那么明明。

健忘哈希工具中键序的意义

在JSON中,一个工具包括一个无序荟萃,而该荟萃中有零个或多个名/值对,个中名是一个字符串,而值是一个字符串、数值、布尔值、空、工具或数组。

遗憾的是,BSON在做搜刮时给次序赋予了意义。在MongoDB中,嵌入工具中键的次序很重要,也就是说,{ firstname: "Phil", surname: "factor" }和{ surname: "factor", firstname: "Phil" }就不匹配。这意味着,你必需保存文档中名/值对的次序,假如你想确保可以找到它们的话。

夹杂“null”和“undefined”

按照正式的JSON尺度(ECMA-404第5节),“undefined”值在JSON中从来就是不正当的,固然它究竟上已经在JavaScript中行使。并且,它在BSON中是“deprecated”,会转换成$null,这并不是一个总令人满足的办理方案。在MongoDB中,要停止行使“undefined”。

行使$limit()而未用$sort()

凡是,当你在MongoDB中开拓时,仅仅查察查询或聚合返回的功效的样例会很有效。 $limit()就是为了满意这个要求,可是,它永久不该该呈此刻最终版本的代码中,除非你起首行使了$sort。这是由于,不这样的话,你就无法担保功效的次序,你就无法靠得住地“按页赏识”数据。为了确保靠得住性,查询或聚合必需是“确定的”,就是说,它们每次执行城市给出沟通的功效。包括$limit而不包括$sort的代码不是确定的,后续会导致难以跟踪的Bug。

小结

对付MongoDB,让你最终感想扫兴的独一方法是把它直接和另一种范例的数据库如RDBMS较量,可能对它有出格的等候。这就像把桔子和叉子较量。数据库体系有它们的用途。最好是领略并了解这些不同。强制MongoDB开拓职员凭证RDBMS的方法干事就太遗憾了,我但愿继承看到办理旧题目的风趣的新要领,如确保数据完备性、使数据体系具有从妨碍和恶意粉碎中规复的手段。

在4.0版本中,MongoDB引入了ACID事宜处理赏罚,这是以创新方法引入重大改进的一个很好的例子。多文档、多语句事宜此刻是原子的了,它应承开拓职员调解用于获取锁的时刻,逾期挂起事宜以及修改断绝级别。

【编辑保举】

  1. 删库跑路?这篇文章教你怎样行使xtraback备份MySQL数据库
  2. 选择吻合开源数据库的五个要点
  3. MongoDB怒改开源协议!不爽这些云计较厂商不付钱!
  4. 相关型数据库尚能饭否?NoSQL、NewSQL谁能接棒?
  5. 没碰着过这十个MySQL数据库经典错误,你必然不是个好工程师
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读