国内服务器
亚洲服务器
欧洲服务器
北美洲服务器
南美洲服务器
大洋洲服务器
非洲服务器

首页>>IDC资讯

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

发表时间:2022-10-13 09:02:30

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

下面是详细介绍:

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

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

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

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

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

{

    _id: "joe",

    name: "Joe Bookreader"

}

{

    patron_id: "joe",

    street: "123 Fake Street",

    city: "Faketon",

    state: "MA",

    zip: "2345"

}

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

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

{

    _id: "joe",

    name: "Joe Bookreader",

    address: {

        street: "123 Fake Street",

        city: "Faketon”,

        state: nMAnz

        zip: T2345”

    }

}

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

{

    _id: "joe",

    name: "Joe Bookreader",

    addresses:[

        {

            street: "123 Fake Streetn,

            city: "Faketon",

            state: "MA",

            zip: "12345"

        },

        {

            street: "l Some Other Street",

            city: "Boston",

            state: "MA",

            zip: "12345"

        }

    ]

}

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

{

    title: "MongoDB: The Definitive Guide",

    author: [ "Kristina Chodorow", "Mike Dirolfn"],

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

    pages: 216,

    language: "English",

    publisher: {

        name: "O'Reilly Media",

        founded: 1980,

        location: "CA"

    }

}

{

    title: "50 Tips and Tricks for MongoDB Developer",

    author: "Kristina Chodorow",

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

    pages: 68,

    language: "English",

    publisher: {

        name: "O'Reilly Media",

        founded: 1980,

        location: "CA"

    }

}

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

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

{

    name: "O'Reilly Media",

    founded: 1980,

    location: "CA",

    books: [123456789, 234567890, …]

}

{

    _id: 123456789,

    title: "MongoDE: The Definitive Guide",

    author: ["Kristina Chodorow", "Mike Dirolf"],

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

    pages: 216,

    language: "English"

}

{

    _id: 234567890,

    title: "50 Tips and Tricks for MongoDB Developer",

    author: "Kristina Chodorow",

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

    pages: 68,

    language: "English"

}

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

{

    _id: "oreilly",

    name: "O'Reilly Media",

    founded: 1980,

    location: "CA"

}

{

    _id: 123456789,

    title: "MongoDB: The Definitive Guiden,

    author: [ "Kristina Chodorow", "Mike Dirolf"],

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

    pages: 216,

    language: "English",

    publisher_id: "oreilly"

}

{

    _id: 234567890,

    title: "50 Tips and Tricks for MongoDB Developer",

    author: "Kristina Chodorow",

    published date: ISODate("2011-05-06"),

    pages: 68,

    language: "English",

    publisher_id: "oreilly"

}

上一篇 下一篇
最新文章

如何提高云服务器的安全系数

香港独立IP空间有什么优势

香港空间影响百度收录吗

为啥要租用美国VPS

VPS的缺点有哪些

香港vps作用在哪里

VPS的优点有哪些

外贸网站为啥选择美国vps

VPS能建多少个网站

VPS要如何选择位置

相关文章

什么是 SDWAN

windows服务器搭建原神私服服务器教程(附客户端+服务端+环境配置)

怎么解决ChatGPT Plus充值失败的问题(chatgpt plus 充值失败)

为何美国服务器价格较为低价?——探究背后的缘由及影响

国外线路sdwan怎么搭建?为何说国外线路要用sdwan搭建?

独享主机的好处是什么?

如何选择服务器租用?价格低的不用备案服务器推荐

香港服务器的操作系统有哪些

先进安全SDWAN与组织不断变化的需求保持同步

为啥你的小网站需要缓存

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!