亲爱的学员:
你好,在回答学员问题的过程中,我发现大家对于第二章的事务处理, 特别是隔离级别,以及第三章的分片集群有相对较多的问题。在这里我给大家推荐一些补充的学习材料可以从另外一个角度来加深一些这些概念的理解。
MongoDB 事务的原子性
https://docs.mongodb.com/manual/core/write-operations-atomicity/
MongoDB 事务的隔离级别和一致性模型
https://docs.mongodb.com/manual/core/read-isolation-consistency-recency/
如果英文不太感冒,在 MongoDB 中文网站上有不少内容,比如分片相关的:
http://www.mongoing.com/?s= 分片集群
课件和 Demo 地址
https://gitee.com/geektime-geekbang/geektime-mongodb-course
作者回复: B-树里面的那个 - 不是“减”,这个就是说 B树的意思。B+树是B树的一个子集,所以也是B树
作者回复: 最后一个不是计数器,是随机数 纠正上面的内容,ObjectID的格式有所修改: ObjectID有12个bytes,分别为: - 4个字节的timestamp(精确到秒) - 5个字节的随机数 - 3个字节的计数器 MongoDB并未在文档中提到保证这个_id的顺序性。不过实际上如果在同一个客户端进程,应该是有这种顺序性的。 你把你的流程贴出来看一下
作者回复: MongoDB是B树索引 MongoDB是B+树索引 上面两句话都是对的。因为B+树是B树的子集
作者回复: 视频是错的 - 我们正在试图修复。
作者回复: 可以参考 $currentDate https://docs.mongodb.com/manual/reference/operator/update/currentDate/
编辑回复: 你好,是的,你说的是对的。老师也在本节课的第一条留言中解答了这个问题。
作者回复: 可以看下评论区
作者回复: “我对字段 A 与字段 B 都创建了索引,并创建了复合索引” 如果你创建了 A,B 复合索引,那么 A 上的单独索引就是多余的了。 “用 A、B 字段当做条件去 count 就很慢很慢。这个怎么破?” 你可以用 .explain(true) 方法看下它是否用了正确的索引。
作者回复: MongoDB不支持数字类型的全文检索和正则搜索。
作者回复: 1) 是的 2) 会使用索引,等于是对$in数组内的每一个元素,使用索引,找到equal的索引项。 3)比如从 range的lower bound 开始往上找,首先在B树里面找到lower bound的那个节点,然后就是B树遍历的流程了,直到upperbound 为止。