• ADADADADAD

    mongodb以哪种格式表示文档结构[ 建站问答 ]

    建站问答 时间:2024-12-01 18:57:49

    作者:文/会员上传

    简介:

    mongodb以BSON格式表示文档结构,它是一个基于分布式文件存储的开源数据库系统,它的特点是高性能、易部署、易使用,存储数据非常方便。具体内容如下:文档是 MongoDB 的核心概念,

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    mongodb以BSON格式表示文档结构,它是一个基于分布式文件存储的开源数据库系统,它的特点是高性能、易部署、易使用,存储数据非常方便。

    具体内容如下:

    文档是 MongoDB 的核心概念,是数据的基本单元,与关系数据库中的行十分类似,但是比行要复杂。文档是一组有序的键值对集合。文档的数据结构与 JSON 基本相同,所有存储在集合中的数据都是 BSON 格式。

    BSON 是一种类 JSON 的二进制存储格式,是 Binary JSON 的简称。 一个简单的文档例子如下:

    {"country":"China","city":"BeiJing"}

    MongoDB 中的数据具有灵活的架构,集合不强制要求文档结构。但数据建模的不同可能会影响程序性能和数据库容量。文档之间的关系是数据建模需要考虑的重要因素。文档与文档之间 的关系包括嵌入和引用两种。

    下面举一个关于顾客 patron 和地址 address 之间的例子,来说明在某些情况下,嵌入优于引用。

    {

    _id:"joe",

    name:"JoeBookreader"

    }

    {

    patron_id:"joe",

    street:"123FakeStreet",

    city:"Faketon",

    state:"MA",

    zip:"2345"

    }

    关系数据库的数据模型在设计时,将 patron 和 address 分到两个表中,在查询时进行关联, 这就是引用的使用方式。如果在实际查询中,需要频繁地通过 _id 获得 address 信息,那么就需要频繁地通过关联引用来返回查询结果。在这种情况下,一个更合适的数据模型就是嵌入。

    将 address 信息嵌入 patron 信息中,这样通过一次查询就可获得完整的 patron 和 address 信息,如下所示:

    {

    _id:"joe",

    name:"JoeBookreader",

    address:{

    street:"123FakeStreet",

    city:"Faketon”,

    state:nMAnz

    zip:T2345”

    }

    }

    如果具有多个 address,可以将其嵌入 patron 中,通过一次查询就可获得完整的 patron 和多个 address 信息,如下所示:

    {

    _id:"joe",

    name:"JoeBookreader",

    addresses:[

    {

    street:"123FakeStreetn,

    city:"Faketon",

    state:"MA",

    zip:"12345"

    },

    {

    street:"lSomeOtherStreet",

    city:"Boston",

    state:"MA",

    zip:"12345"

    }

    ]

    }

    但在某种情况下,引用用比嵌入更有优势。下面举一个图书出版商与图书信息的例子,代码如下:

    {

    title:"MongoDB:TheDefinitiveGuide",

    author:["KristinaChodorow","MikeDirolfn"],

    published_date:ISODate("2010-09-24"),

    pages:216,

    language:"English",

    publisher:{

    name:"O'ReillyMedia",

    founded:1980,

    location:"CA"

    }

    }

    {

    title:"50TipsandTricksforMongoDBDeveloper",

    author:"KristinaChodorow",

    published_date:ISODate("2011-05-06"),

    pages:68,

    language:"English",

    publisher:{

    name:"O'ReillyMedia",

    founded:1980,

    location:"CA"

    }

    }

    从上边例子可以看出,嵌入式的关系导致出版商的信息重复发布,这时可采用引用的方式描述集合之间的关系。使用引用时,关系的增长速度决定了引用的存储位置。如果每个出版商的图书数量很少且增长有限,那么将图书信息存储在出版商文档中是可行的。

    通过 books 存储每本图书的 id 信息,就可以查询到指定图书出版商的指定图书信息,但如果图书出版商的图书数量很多, 则此数据模型将导致可变的、不断增长的数组 books,如下所示:

    {

    name:"O'ReillyMedia",

    founded:1980,

    location:"CA",

    books:[123456789,234567890,…]

    }

    {

    _id:123456789,

    title:"MongoDE:TheDefinitiveGuide",

    author:["KristinaChodorow","MikeDirolf"],

    published_date:ISODate("2010-09-24"),

    pages:216,

    language:"English"

    }

    {

    _id:234567890,

    title:"50TipsandTricksforMongoDBDeveloper",

    author:"KristinaChodorow",

    published_date:ISODate("2011-05-06"),

    pages:68,

    language:"English"

    }

    为了避免可变的、不断增长的数组,可以将出版商引用存放到图书文档中,如下所示:

    {

    _id:"oreilly",

    name:"O'ReillyMedia",

    founded:1980,

    location:"CA"

    }

    {

    _id:123456789,

    title:"MongoDB:TheDefinitiveGuiden,

    author:["KristinaChodorow","MikeDirolf"],

    published_date:ISODate("2010-09-24"),

    pages:216,

    language:"English",

    publisher_id:"oreilly"

    }

    {

    _id:234567890,

    title:"50TipsandTricksforMongoDBDeveloper",

    author:"KristinaChodorow",

    publisheddate:ISODate("2011-05-06"),

    pages:68,

    language:"English",

    publisher_id:"oreilly"

    }

    mongodb以哪种格式表示文档结构.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mongodb