我是mongo的新手,并且做了很多阅读和概念验证。关于多个集合或嵌入式文档有很多讨论。还有其他选择吗?忽略我的relationalDB思想......你不能在同一个集合中放置两个不同的模式吗?
原油示例:
{
_id: 'f48a2dea-e6ec-490d-862a-bd1791e76d9e',
_owner: '7a147aad-e3fd-4e55-9fd5-e2cb48d31a83'
manufacturer: 'Porsche',
model: '911',
img: '<byte array>'
},{
_id: '821ca9b7-faa1-4516-a27e-aec79fcb89a9',
_owner: '46ade116-cd59-4d0c-a4d3-cd2e517a256c',
manufacturer: 'Nissan',
model: 'GT-R',
img: '<byte array>'
},{
_id: '87999e27-c98b-4cad-b444-75626f161840'
_owner: 'fba765c8-32dd-49ba-91d3-d361b40bf4a7',
manufacturer: 'BMW',
model: 'M3',
wiki:'http://en.wikipedia.org/wiki/Bmw_m3',
img: '<byte array>'
}
和同一集合中的完全不同的架构
{
_id: '7a147aad-e3fd-4e55-9fd5-e2cb48d31a83',
name: 'Keeley Bosco',
email: 'katlyn@jenkinsmaggio.net,
city": 'Lake Gladysberg',
mac: '08:fd:0b:cd:77:f7',
timestamp: '2015-04-25 13:57:36 +0700',
},{
_id: '46ade116-cd59-4d0c-a4d3-cd2e517a256c',
name: 'Rubye Jerde',
email: 'juvenal@johnston.name',
city: null,
mac: '90:4d:fa:42:63:a2',
timestamp: '2015-04-25 09:02:04 +0700',
},{
_id: 'fba765c8-32dd-49ba-91d3-d361b40bf4a7',
name: 'Miss Darian Breitenberg',
email: null,
city: null,
mac: 'f9:0e:d3:40:cb:e9',
timestamp: '2015-04-25 13:16:03 +0700',
}
(我不使用嵌入式文档(在我真正的POC中)的原因是一个人可能拥有80000&#34;汽车&#34;并超过16MB限制。)
除了渴望划分数据之外,还有一个垮台吗?执行此操作的原因可能以便我们可以关联记录...我确实看到3.2已加入。该项目对于了解所有业务案例来说太新了。
答案 0 :(得分:0)
虽然Mongodb在同一个集合中支持不同的模式。但是,作为一种好的做法,最好在整个集合中坚持使用一个模式或类似模式,这样您的应用程序逻辑就会更简单。
在您的情况下,是的,考虑到子文档的大小,您不使用嵌入式文档是好的。但是,我建议采用标准化数据模型,在这种情况下并不是很糟糕。
此外,您可以参考:https://docs.mongodb.com/master/core/data-model-design/