LiteDB用法小结

2022-04-15 00:00:00 数据 函数 集合 对象 序列化

LiteDB(https://www.litedb.org/)是一种文档型单文件数据库,基于Key-Value方式存取数据。

LiteDB的基本数据结构

BsonDocument

BsonDocument用于存储单一对象,其构造函数接收字典型数据,定义存储的具体内容。

BsonArray

BsonArray用于存储多项同类型对象,其构造函数接收对象集合。

BsonValue

BsonValueBsonDocumentBsonArray的公共基类,可以在运行时确定其具体类型,通过一系列As*方法将其转换为具体类型。

简单对象的存储

对于单一对象,灵活、地控制存储的存取对象数据,是通过自定义对象的序列化和反序列化函数实现。

//
// 自身直接支持LiteDB存储的Point类
//
public readonly struct Point
{
    public Point(double x, double y)
    {
        X = x;
        Y = y;
    }

    public double X { get; }
    public double Y { get; }

    public static Point Zero { get; } = new Point(, );

    #region LiteDB
    /// <summary>
    /// 在静态构造函数中调用注册函数,
    /// 确保LiteDB引擎能够找到此类对应的序列化和反序列化函数
    /// </summary>
    static Point() => RegisterType();

    /// <summary>
    /// 注册序列化与反序列化函数
    /// </summary>
    public static void RegisterType()
        => BsonMapper.Global.RegisterType(Serialize, Deserialize);

    /// <summary>
    /// 序列化
    /// </summary>
    public static BsonValue Serialize(Point parameter)
        => new BsonDocument(new Dictionary<string, BsonValue>
        {
            {"X", parameter.X}, // 定义需要存储的数据项
            {"Y", parameter.Y},
        });

    /// <summary>
    /// 反序列化
    /// </summary>
    public static Point Deserialize(BsonValue bsonValue)
    {
        var x = bsonValue["X"].AsDouble; // 提取、解析存储的数据项
        var y = bsonValue["Y"].AsDouble;
        return new Point(x, y);
    }
    #endregion
}

相关文章