使用C#驱动程序在mongodb中存储JContainers(JObject,JArray等)

时间:2016-10-13 16:09:07

标签: c# mongodb json.net bson

我有一个WEB API Web服务,它接受我想要存储为MongoDB文档中的属性的任意Object。当我的类库得到它时,它是JObject,所以简单地存储它包括各种额外的残余。我是mongo的新手,我唯一可以理解的解决方法是创建BsonValue类型的属性,并编写以下一些hackery来创建它:

    private static BsonValue ToBsonValue(object value)
    {
        var jobject = value as Newtonsoft.Json.Linq.JContainer;
        if (jobject != null)
        {
            return BsonDocument.Parse("{crazyHack: " + jobject.ToString() + "}")[0];
        }
        else
        {
            return BsonValue.Create(value);
        }
    }

检索该值时,我会将其转换回Object BsonTypeMapper.MapToDotNetValue

我无法想象没有更简单的方法可以做到这一点,但JContainer似乎没有任何方法可以生成普通的object本身不是JContainer。任何提示将不胜感激。

0 个答案:

没有答案