我想更改我的数据库的模式。现在它是这样的:如何使用具有高度动态模式的Mongoose MongoDB
{
"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
}
}
}
这样我可以原子一个以上的日期更新量,但我不知道如何与猫鼬的模式,因为这种管理日期可以以高度动态的方式添加和删除。 在集合中将会有很多文档的数量为不同日期指定 ex。一个文件可以只有几个日期的数量,另一个文件可以有几年的数量
是更好地添加/删除字段迫使每个文件有一个日期字段(默认为0数量)或是它最好将strict设置为false? 有什么缺点我不知道?
您的第二个模式格式无效。数组只能保存文档或值。你的意思是'disp:{...}'? – BatScream 2014-12-03 08:44:29
@BatScream是的,我复制并粘贴没有双重检查。感谢您指出 – Edo 2014-12-03 08:47:17
如果您有第二种格式,则不能根据日期执行聚合操作。最好不要有任何动态变量,并且可能在查询选择器中用作键。 – BatScream 2014-12-03 08:51:05