MongoDB Mongoose动态字段

时间:2014-02-11 10:22:49

标签: mongodb mongoose

我正在开发一个网站,其中每个用户都有不同货币的余额。在网站的整个生命周期中,我将定期添加新货币。

我正试图找出使用mongoose存储余额的最佳方法。我目前正在处理这样的余额:

var UserSchema = new Schema({
    ...
    balances: {
        mck: {
            type: Number,
            default: 100.0,
            addresses: String
        },
        btc:{
            type: Number,
            default: 10.0,
            address: String
        }
    }

});

但它似乎不是最好的方法。每次我想添加新货币时,现有文件都不会包含它。 允许数据库中的文档与架构不同步是否有缺点?

我想通过使用子文档存储货币及其各自的余额来使架构更具动态性:

var BalanceSchema = new Schema({
    currency: String,
    amount: Number,
    address: String
});

但是在更换余额等时会有很多回调需要处理。

哪种方法最好?还是我错过了另一个?

1 个答案:

答案 0 :(得分:0)

如果您将来需要动态添加货币,则应选择将“余额”作为数组。

balances: [
    {
    curr: "mck",
    bal: 123,45
    },
    {
    curr: "btc",
    bal: 42
    }
]

它有助于将来的查询(like so),并且它还为每个文档提供了很多的灵活性。

或者为什么不选择像以下那样的平面架构:

{
user: "user1",
currency1balance:54,76,
currency5balance:1024
}