Получение структуры документа на основе предыдущих записей - PullRequest
0 голосов
/ 26 сентября 2018

Написание этого вопроса Я работаю с LiteDB .Net, но я думаю, что этот вопрос относится ко всем вопросам NoSQL.

Одна из коллекций в моей БД содержит документы, которые не имеютфиксированная структура.Я хочу позволить пользователю добавлять свои собственные значения, любого имени и значения, которые он хочет.

Так, например, документ сначала будет иметь следующую структуру:

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

Но пользователь будетвозможность указать новое значение и выбрать, будет ли оно int или логическое .

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

В следующий раз, когда пользователь откроет мое приложение, он, возможно, захочет использовать значениятого же типа, что и раньше, поэтому мне нужно показать ему какую-то форму с именами, основанными на его предыдущей деятельности.Поэтому, если он ранее добавил значение с именем «customValue», я хочу показать ему TextView с именем «customValue» в следующий раз, когда он откроет страницу с формой.

Существует ли способ получения структуры такого документа на основе каждой записи изколлекция?Или мне нужно как-то отслеживать имена добавленных значений и сохранять их в отдельной коллекции?

1 Ответ

0 голосов
/ 27 сентября 2018

В 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
}
...