1.完全限定的集合名字不能超过128个字符
盖子集合(一个集合设置固定大小,当满了之后再插入新的文档就会覆盖旧的文档):
2.TTL集合
db.reviews.createIndex({time_field:1},{expireAfterSeconds: 36}) //创建一个带TTL的索引
db.reviews.insert({time_field:new date()}) //插入当前时间,会与这个时间相比较,36秒后被删除,如果插入的不是时间就不会过期
限制:不能在_id字段建立索引,或者在其他已经建立索引的字段建立TTL索引,我们也不能在盖子集合里使用TTL索引,因为它不支持删除单个文档,最后,虽然我们可以在索引字段里有一组时间戳,但也不能组合TTL索引。这种情况,TTL属性只会使用集合中最早的时间戳
3.在正常的集合里,更新文档可能会导致空间增长,需要移动新的地址,并且留出空白区。这个特性导致数据大小和mongodb占用的磁盘空间之间有差别。
4.有效的key名字由最大255B长度的字符串组成,mongo会把key也存储起来,所以起的key的名字简短比较省空间。
5.文档的限制
1)在mongo 2.0以后的版本里,bson文档大小限制为16MB,原因有二:
(1)阻止开发者创建无意义的数据模型,虽然差的数据模型仍然可能出现,但16MB的限制不鼓励使用超过这个限制的文档,如果要存储超过16MB的文档,就可以考虑把文档存储为更小的文档。
(2)16MB的限制与性能相关,在服务器端,查询大的文档时需要在发送给客户端之前把文档拷贝到缓存里。这个拷贝工作非常昂贵,特别是当客户端不需要整个文档时。此外,一旦发送数据,这就是跨网络传输数据的工作,而且客户端驱动要反序列化它成本很高,尤其是处理上MB字节的大文件数据时。
(3)mongo文档的嵌套深度最大值限制是100。 如果要序列化一个树形结构到mongo中,其结果就是查询和访问非常困难,还可能会导致其他问题。这种类型的数据结构通常都通过递归函数访问,对深入嵌套的文档处理会导致堆栈溢出。
2)大量插入
数据库设置的一次插入操作上限是16MB,经验证明,最有效的大量插入在这个限制下都可以正常工作。
6.findone:会在自然排序文件集合中返回第一个项目
7.