我使用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
}
答案 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",
}