0

写这个问题我正在使用 .Net 的LiteDB,但我认为这个问题适用于整个 NoSQL 问题。

我的数据库中的一个集合包含没有固定结构的文档。我想让用户添加他自己的值,无论他想要什么名称和值。

因此,例如,文档最初将具有以下结构:

{
   "_id": 1,
   "creatorId": 10
}

但是用户将能够指定新值并选择它是int还是boolean

{
   "_id": 1,
   "creatorId": 10,
   "customValue": false
}

下次用户打开我的应用程序时,他可能会想要使用与他以前使用过的相同类型的值,所以我需要向他展示某种形式的输入,这些输入是基于他之前的活动命名的。因此,如果他之前添加了名为“customValue”的值,我想在他下次打开带有表单的页面时向他展示名为“customValue”的 TextView。

有没有一种方法可以根据集合中的每条记录来检索此类文档的结构?或者我是否需要以某种方式跟踪附加值的名称并将它们保存在单独的集合中?

4

1 回答 1

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
}
于 2018-09-27T18:54:35.503 回答