提出这个问题时,我正在使用.Net的LiteDB,但我认为该问题适用于整个NoSQL问题。
数据库中的一个集合包含不具有固定结构的文档。我想让用户添加自己的值,无论他想要什么名称和值。
因此,例如,文档最初具有以下结构:
{
"_id": 1,
"creatorId": 10
}
但是用户可以指定新值并选择是 int 还是 boolean 。
{
"_id": 1,
"creatorId": 10,
"customValue": false
}
下一次用户打开我的应用程序时,他可能想使用与以前使用的类型相同的值,因此我需要向他展示某种形式的表单,并使用基于其先前活动命名的输入。因此,如果他以前添加了名为“ customValue”的值,那么我想在他下次打开带有表单的页面时向他显示名为“ customValue”的TextView。
是否有一种方法可以基于收集的每个记录来检索此类文档的结构?还是我需要以某种方式跟踪添加值的名称并将其保存在单独的集合中?
答案 0 :(得分:0)
在LiteDB中,您可以使用BsonDocument
类来读取集合文档。 BsonDocument
是一种以BSON格式(所有BSON数据类型均可用)实现文档的通用方法。
如果您使用:
var col = db.GetCollection("mycol");
var doc = col.FindById(1);
foreach(var key in doc.Keys)
{
var value = doc[key];
var valueDataType = value.Type; // return an enumerable with all data types
}