1

我使用 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   
    }
4

1 回答 1

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",
}
于 2011-03-08T14:14:20.437 回答