MongoDB概述


MongoDB是一个跨平台、面向文档的数据库,提供高性能、高可用性和易扩展性,MongoDB基于集合和文档的概念运行。

数据库(Database)


数据库是集合的容器,每个数据库在文件系统上都有其自己的文件集,一个MongoDB服务器通常具有多个数据库。

集合(Collection)


集合是一组MongoDB文档,它类似于RDBMS表。集合存在于单个数据库中。集合无需强制规定一个模式,集合中的文档可以具有不同的字段。通常,集合中的所有文档都具有相似或相关的结构。

文档(Document)


文档是一组键值对,文档具有动态模式,动态模式意味着同一集合中的文档不需要具有相同的字段,并且集合文档中的公共字段可以保存不同类型的数据。

下表显示了RDBMS术语与MongoDB的关系。

RDBMSMongoDB
数据库(Database)数据库(Database)
表(Table)集合(Collection)
元组/行(Tuple/Row)文档(Document)
列(column)字段(Field)
表联接(Table Join)嵌入式文档(Embedded Documents)
主键(Primary Key)主键(MongoDB本身提供的默认键_id)
数据库服务器和客户端
mysqld / Oraclemongod
mysql / sqlplusmongo

文档例子


以下示例显示了博客站点的文档结构,它只是一个逗号分隔的键值对。

{
    _id: ObjectId(7df78ad8902c)
    title: 'MongoDB Overview',
    description: 'MongoDB is no sql database',
    by: 'newbiego point',
    url: 'http:// www.newbiego.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100,
    comments: [
        {
            user:'user1',
            message: 'My first comment',
            dateCreated: new Date(2011,1,20,2,15),
            like: 0
        },
        {
            user:'user2',
            message: 'My second comments',
            dateCreated: new Date(2011,1,25,7,45),
            like: 5
        }
    ]
}

_id是一个12字节的十六进制数字,可确保每个文档的唯一性。你可以在插入文档时提供_id。如果你不提供,那么MongoDB将为每个文档提供唯一的ID。当前时间戳的前12个字节,前4个字节,机器ID的后3个字节,MongoDB服务器的进程ID的后2个字节以及其余3个字节是简单的增量值。