我想更改数据库的架构。现在它就像:
{
"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? 我不知道有什么缺点吗?
答案 0 :(得分:3)
如果你想坚持使用第二种格式,那么它就是'最好将[{3}}用于disp
字段:
var my_schema = new Schema({ disp: {} });
或
var my_schema = new Schema({ disp: Schema.Types.Mixed });
最好添加/删除强制每个文档都有的字段 日期字段(默认为0个数量)?
这不是一个好主意,因为您需要明确指定架构中的所有可能日期。
或者将strict设置为false更好吗?
我不建议这样做,因为它会影响整个架构,而不仅仅是dist
字段。
我不知道有什么缺点吗?
以下是我可以看到的一些缺点:
dist
字段上拥有架构的所有优势; dist
字段但这并不意味着你的想法很糟糕。使用日期作为键的优点可以克服所有缺点。