MongoDB持久混合类型数组

时间:2011-07-17 18:45:33

标签: c# database

我有一个MongoDB(顺便说一句_我真的很喜欢Mongo),并且在我试图保存一组对象的其中一个集合中。其中一些对象将是字符串,一些是bool,一些是十进制的。 数组的定义(实际上它是一个字典)是这样的:

        public Dictionary<string, object> Fields
    {
        get
        {
            if (_Fields == null)
                _Fields = new Dictionary<string, object>();
            return _Fields;
        }
        set
        {
            _Fields = value;
        }
    }

直到我的代码将数据保存到数据库,数组中变量的类型是正确的。当我通过MongoHQ或代码保存并查看数据时,数组会返回所有字符串。

我正在使用C#驱动程序。

有没有办法强制变量为类型?我在这里错过了什么吗? TIA

1 个答案:

答案 0 :(得分:0)

你问的是合理的。对于对象,没有特殊的语法 - 只需确保输入不是字符串。但是在我的源代码中(可能很旧),我看不到BSON序列化器中字典的映射。

现在在BerkeleyDB中你需要为你存储的每种类型定义一个回调,但MongoDB通过BSON比这更聪明。

btw:我正在使用MongoDB的https://github.com/atheken/NoRM驱动程序。你在用什么?

思路:

  • 尝试收集,列表或数组而不是字典

  • 将字典序列化/反序列化为/ []