文档
文档就是键值对的一个有序集。每种编程语言表示文档的方法不太一样,但大多数编程语言都有一些想通的数据结构,比如映射、散列、字典。MongoDB不但区分类型,而且区分大小写。例:下面两个文档是不同的{"foo":3}{"foo":"3"}下面两个文档是不同的{"foo":3}{"Foo":3}MongoDB的文档不能有重复的键。文档中的键/值对是有序的:{"x":1,"y":2}与{"y":2,"x":1}是不同的。集合集合就是一组文档。如果将mongoDB中的一个文档比喻为关系型数据库中的一行,那么一个集合就相当于一张表1、动态模式集合是动态模式的。这意味着一个集合里面的文档可以是各式各样的。因为集合里面可以放置任何文档,随之而来的一个问题是:还有必要使用多个集合吗?使用多个集合的原因:*不利于开发和管理*分开查询多个集合要快得多*把同种类型的文档放 在一个集合里,数据会更中集中。*可以更有效地对集合进行索引数据库在MongoDB中,多个文档组成集合,而多个集合可以组成数据库。一个MongoDB实例可以承载多个数据库,数据库名区分大小写,简单起见,数据库名应全部小写。数据库最终会变成文件系统里的文件,而数据库名就是相应的文件名,这是数据库名有如此多限制的原因。保留数据库名:admin local configMongoDB在保留JSON基本键/值对的基础上,添加了其他一些数据类型。
*null用于表示空值或者不存在的字段:{"x":null}*布尔型{"x":true}*数值shell默认使用64位浮点型数值。对于整数型,可使用NumberInt类(表示4字节带符号整数)或NumberLong类(表示8字节带符号整数):{"x":NumberInt("3")}{"x":NimberLong("3")}*字符串{"x":"foobar"}*日期{"x":new Date()}*正则表达式查询时,使用正则表达式作为限定条件,语法也与JavaScript的正则表达式语法相同:{"x":/foobar/i}*数组{"x":["a","b","c"]}*内嵌文档文档可以内嵌其他文档,被嵌套的文档作为父文档的值:{"x":{"foo":"bar"}}*对象id对象id是一个12字节的ID,是文档的唯一标识。{"x":ObjectId()}*二进制数据*代码查询和文档中可以包括任意JavaScript代码: