MongoDB持久化混合类型数组

本文关键字:数组 类型 混合 持久化 MongoDB | 更新日期: 2023-09-27 18:02:15

我有一个MongoDB,在一个集合中,我试图保存一个对象数组。这些对象有些是字符串,有些是bool,有些是decimal。数组(实际上它是一个Dictionary)的定义如下:

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

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

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

是否有一种方法强制变量为类型?我遗漏了什么吗?

MongoDB持久化混合类型数组

你的要求是合理的。当涉及到对象时,没有特殊的语法——只需确保您的输入不是字符串。然而,在我拥有的源代码中(可能是旧的),我在BSON序列化器中没有看到字典的映射。

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

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

的想法:

  • 尝试使用集合、列表或数组代替字典

  • 序列化/反序列化你的字典到/从字节[]