在C#中管理动态文档对象的最佳方法(官方驱动程序)

时间:2011-03-02 23:26:52

标签: c# mongodb mongodb-.net-driver

我使用BsonObject搜索在C#中管理可扩展模式的最佳方法,该BsonObject可以在不构造包含每个键定义的对象类的情况下进行扩展。

该对象创建一个文档存储,可以使用定义中的配置文件键,值,类型进行扩展。我已经在另一个项目中使用了BsonArray存储但不是实用的,索引在我们的情况下不是很有用。该对象构建一个对象,如动态键值列表,用于最佳索引显示和查询。

感谢。

//BsonArray method:
    new BsonKeys()
    {
       Key = key,
       Value = item,
       Type = type
    }
    //--------------------------------------------
    //get a cursor like : List<BsonKeys> list
    //--------------------------------------------
    //save method like:
    //.Set("DynamicKeyValues", new BsonArray(list.Select(x => (BsonValue)x.ToBsonDocument())))
    Document result :
    {
        ID:"some _id",
        StaticKey:"Some static",
        ...   
        DynamicKeyValues
        [
            {Key="keyname1" , value="Value1", type="String"},
            {...},
            {Key="keynameN" , value="ValueN", type="String"}    
        ]       
    } 
    //-------------------------------------------

    //Searching like :
    {
        ID:"some _id",
        StaticKey:"Some static",
        ...   
        DynamicKeyValues
        {
          Key:value,
          Key2:Value2,
          ...
          KeyN:valueN   
    }

1 个答案:

答案 0 :(得分:0)

如果您想提高搜索性能,则应使用重复数据进行搜索。例如:用“键”分隔数据。尝试为每个“密钥”使用不同的存储集合。

这样的事情:

//for key is Location
LocationCollection
{
    Value: value
    // reference to root entity
    ID:"some _id",
    StaticKey:"Some static",
}

//for key is Name of person
FullNameCollection
{
    Value: value
    // reference to root entity
    ID:"some _id",
    StaticKey:"Some static",
}