c# - 在 MongoDB 中将枚举存储为字符串

有没有办法将枚举存储为字符串名称而不是序数值?

例子:

想象一下我有这个枚举:

public enum Gender
{
    Female,
    Male
}

现在如果某个虚构的用户存在

...
Gender gender = Gender.Male;
...

它将作为 { ... "Gender": 1 ... }

存储在 MongoDb 数据库中

但我更喜欢这样的 { ... "Gender": "Male"... }

这可能吗?自定义映射、反射技巧等等。

我的上下文:我在 POCO 上使用强类型集合(好吧,我标记 AR 并偶尔使用多态性)。我有一个工作单元形式的瘦数据访问抽象层。所以我不是序列化/反序列化每个对象,但我可以(并且确实)定义一些 ClassMap。我用的是官方的 MongoDb 驱动 + fluent-mongodb。

最佳答案

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

public class Person
{
    [JsonConverter(typeof(StringEnumConverter))]  // JSON.Net
    [BsonRepresentation(BsonType.String)]         // Mongo
    public Gender Gender { get; set; }
}

https://stackoverflow.com/questions/6996399/

相关文章:

linux - 删除mongodb的日志文件安全吗?

mongodb - 存储在 MongoDB 中的数组是否保持顺序?

mongodb - 更新 MongoDB 中精确元素数组中的字段

java - “字段需要一个无法找到的 bean。”使用mongodb的错误spring restf

collections - MongoDB一次查询多个集合

c# - MongoDB GridFs with C#,如何存储图片等文件?

mongodb - 将 "working set"放入 MongoDB 的 RAM 是什么意思?

javascript - 如何在 Node.js 中使用带有 Promise 的 MongoDB?

mongodb - MySql 是否有一个示例 MongoDB 数据库?

javascript - 在 MongoDB 和 Mongoose 中执行全文搜索的最佳方法