【发布时间】:2014-10-16 20:20:00
【问题描述】:
我很好奇 MongoDB 是否可以选择将一个对象与另一个对象(在同一架构中)一起保存为它的“原型”。例如:
假设我们在数据库中有一个像这样的对象
{
name : 'foo',
lastName : 'bar',
email : 'foo_bar@baz.com'
}
我想做的是获取这个对象并更新电子邮件(例如)
所以新对象会变成这样:
{
name: 'foo',
lastName : 'bar',
email : 'some_other_email@baz.com'
}
如您所见,这里有一个重复的数据(即 name 和 lastName 属性)。
我想做的是只保存差异,这样对象就会在电子邮件道具上,然后像这样引用原始对象
{
email : 'some_other_email@baz.com',
__proto__ : originalObjectId //or whatever
}
我知道我可以直接更新对象或保存对象的新副本,但我希望具有不变性而不是每次都保存整个对象,我只想保存与原始对象的差异。
这样的事情是否可能开箱即用(我的意思是 mongo 是否支持和优化这样的事情)? (或通过一些像猫鼬之类的库)
或者我必须自己实现它?
干杯, 布吉
【问题讨论】:
-
你能命名一个有继承的数据库吗?我们现在谈论的是复制数据以达到最佳速度。您尝试最小化磁盘上存储的数据大小。如果你想得到一个完整的对象,你能想象要经过多少跳吗?
-
@wayne 像 PostgreSQL 这样的对象关系数据库实际上就是这样做的。
标签: javascript node.js mongodb mongodb-query