mongodb - 将自己的接口序列化为 ObjectId 字段?
问题描述
我有一个数据库 id 的接口(这是由于架构边界)。该接口只公开了一个字符串属性,以避免依赖于驱动程序库本身(即MongoDB.xxx)。
public interface IDatabaseId
{
string Id { get; set; }
}
我使用 MongoDB 的 ObjectId(在内部使用 ObjectId.GenerateNewId() 并将字符串化版本传递给公共 Id 字段)在我的数据库包装库中实现了这个合同。
在我的一个业务类中,我有这样一个 ID 字段,我希望将其序列化为相应集合文档中的 ObjectID。
[BsonId(Order = 0)]
public IDatabaseId Id { get; set; }
我尝试使用自定义序列化程序,在其中获取字符串 Id 属性并将其从/作为 ObjectID 反序列化。这可行,但是在我的 mongo db 集合中,_id 字段不是直接的 ObjectId 字段,而是带有嵌入的 _id 字段的对象。
我的问题是,如何将我的自定义对象直接序列化为 ObjectId 字段?
解决方案
解决方法不是在序列化器中写一个document start,而是直接写object id值。
推荐阅读
- elasticsearch - 递归在logstash中的kv过滤器中不起作用
- android - 在基本模块中找不到动态功能模块中的 Android 提供程序
- javascript - 是否可以让 Navlink activeClassName 用于多个 url?[反应]
- powershell - 有没有办法知道最后一个修改文件夹 NTFS 权限的帐户?
- flutter - 图标上方和下方带有文本的按钮
- python-3.7 - 是否可以在嵌套 if 语句中修改全局变量?
- tsql - 如何根据日期选择增加计数器
- javascript - 如何在画布元素中获取整个图像?
- express - 如何使用 express-validator 在单独的文件中实现验证
- java - 如何使用 Android Studio 从 Firebase 实时数据库中的节点检索特定数据?