1

各キーの定義を保持するオブジェクト クラスを構築せずに拡張できる BsonObject を使用して、C# で拡張可能なスキーマを管理する最良の方法を探しています。

このオブジェクトは、構成ファイルのキー、値、タイプを定義から使用して拡張できるドキュメント ストレージを作成します。私は別のプロジェクトで 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 に答える