Я искал наилучшие способы управления схемами расширяемых объектов в 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
}