文档(小套娃)
文档对象:
{"greeting":"Hello world","foo":3} {"foo":"3","greeting":"hello world"}
MongoDB里的文档通常会更加的复杂,不过,这里有必要注意几点:
- 文档中的键/值对是有序的,所以上下两个文档是不同的 文档的键是字符串,而值不仅可以使字符串,也可以是其他几种类型的值
- 文档的值不仅可以使字符串,也可以是其他几种类型的值
- 文档的键:
- 不能有\0(因为它表示结尾)
- .和$在特定环境下使用,因为它们是保留字
- 以“_”为开头的键是保留的
- MongoDB不但区分类型,还区分大小写。两个foo的值是不同的,一个数字,一个字符串,两个greeting的键也是不同的(H和h)
####小心#### MongoDB文档不能有重复的键!
集合(中套娃)
- 把各种文档都存放在一个集合里,太乱!
- 因为乱,所以你一旦需要查询某键的时候,就会太慢!
- 将同类的文档放在一个集合里,逻辑上更合理
- 索引是按照集合来创建的,将同类的东西放入文档可以提高索引的效率
####举例#### 超市里都是把同类的商品放在一起贩卖;数学上也有名为“合并同类项”的方法。 ####总结#### 集合是为了更有逻辑的分类不同类型的文档,使得MongoDB的效率提高。
子集合
通过用"."来按命名空间划分子集合。如: blog有两个集合posts和authors,可以这样:blog.posts,blog.authors
命名
- 不能是空字符串""
- 不能含有\0,(表示结尾)
- 不能以system开头
- 不能有保留字$
数据库(大套娃)
命名 ** 不能是空字符串""
- 不能含有\0 . \ / $ ''(空格)
- 全部应该小写。 因为数据库名最终会变成文件系统里的文件,所以会有这么多限制... ####注意#### 有一些数据库名是保留的,如:admin、local、config