2

我正在序列化对象并将它们存储在 MongoDB 数据库中,该数据库不允许以“$”开头的键。我需要多态反序列化,JSON.Net 通过添加一个名为“$type”的变量来支持它。我可以通过简单地将对象存储为字符串来解决这个问题,但是我无法使用 Mongo 对存储的数据进行任何类型的过滤/查询。

是否可以将该名称更改为与 MongoDB 兼容的名称?

4

1 回答 1

3

您可以在 MongoDB 的 C# 驱动程序中BsonDiscriminatorAttribute使用来支持多态序列化。该主题可能非常复杂,因此有必要查阅有关类映射、标量和分层鉴别器等注册的文档。

在最简单的情况下,它将如下所示:

[BsonDiscriminator(Required = true)]
[BsonKnownTypes(typeof(Cat))]
public class Animal { ... }

public class Cat : Animal { ... }

现在,如果你存储一个Cat喜欢

db.GetCollection<Animal>("Animal").Insert(new Cat());

你会看见

db.Animal.find();
> { "_id" : ObjectId("..."),  "_t" : "Cat" }
于 2013-06-04T16:11:33.857 回答