【发布时间】:2015-01-31 17:45:42
【问题描述】:
我想更改我的数据库的架构。现在是这样的:
{
"disp":[
{
"quantity":1,
"date":20141109
},
{
"quantity":1,
"date":20141110
},
{
"quantity":1,
"date":20141111
}
]
}
“日期”是唯一的并被索引。 像这样的模式对我来说有很大的缺点。我无法以原子方式更新多个日期的“数量”,因此我必须在我的应用中实现 Two Phase Commits。
我正在测试替代架构,我认为这个可以满足我的需求
{
"disp":{
"20141109": {
"quantity":1
},
"20141110": {
"quantity":1
},
"20141111": {
"quantity":1
}
}
}
通过这种方式,我可以自动更新多个日期的数量,但我想知道如何使用 mongoose 模式进行管理,因为可以以高度动态的方式添加和删除日期。 在集合中将有很多文档,其中指定了不同日期的数量 前任。一个文档只能有几个日期的数量,而另一个文档可以有几年的数量
添加/删除字段强制每个文档都有一个日期字段(默认为 0 数量)更好还是将strict 设置为 false 更好? 有什么我不知道的缺点吗?
【问题讨论】:
-
您的第二种模式格式无效。数组只能保存文档或值。你是说
disp:{...}吗? -
@BatScream 是的,我复制并粘贴时没有仔细检查。谢谢指出
-
如果你有第二种格式,你不能根据日期执行聚合操作。最好不要有任何动态变量并且可能在查询选择器中用作键的东西。