我正在构建一个简单的个人使用的会计程序(MEAN堆栈)。因为我熟悉Mongo,所以我到达了Mongo,但是当我充实了我怀疑的模式时。我想介绍我的想法,并可能以另一种方式征求建议。由于同一交易必须在任意数量的账户的账本上显示,我目前的想法是不将交易存储为账户的子文档,而是作为他们自己的收藏(以避免重复)。而忽略了重要比特,它会是这个样子:关于模式设计的建议 - MongoDB或潜在的Neo4J
var accountSchema = new mongoose.Schema({
name: String,
// etc
});
var entrySchema = new mongoose.Schema({
amount: Number,
account: {type: mongoose.Schema.Types.ObjectId, ref: 'Account'}
});
var transactionSchema = new mongoose.Schema({
date: Date,
debits: [entrySchema],
credits: [entrySchema]
});
虽然这在我看来,存储数据的逻辑方式,有一些明显的查询担忧。例如,当我想要查看帐户的分类帐时,我必须迭代该期间的所有交易,并且每个人都重复信用卡和借记卡收款以检查是否涉及该帐户。
我对图表dbs没有任何经验,但我在想,像Neo4J这样的东西可能更适合查询这种类型的数据。我的问题是,你同意还是Mongo仍然是一个不错的选择,但我正在考虑模式错误?
我感谢您的详细回复;你证实了我的怀疑。这对我来说是学习新事物的好起点,这永远是一场胜利。 – amnesia