使用MongoDB C#驱动程序v2.0.1在自定义类型的IDictionary中插入

时间:2015-06-25 03:10:59

标签: c# mongodb dictionary mongodb-.net-driver

我们有一个包含一些属性的类,包括自定义类型的IDictionary。当我们试图推动该IDictionary时,我们正在获得状态,并且#34; Faulted"还有一条异常消息,上面写着"字段序列化程序' DataUpdates'必须实现IBsonArraySerializer并提供项目序列化信息。"

但是在相同代码工作的驱动程序的先前版本上。这是我的示例代码

TestClass1.cs

public virtual string Id { get; set; }

[BsonDictionaryOptions(DictionaryRepresentation.ArrayOfArrays)]
public IDictionary<Metadata, DateTime> DataUpdates { get; set; }


 Metadata.cs

 public string Collection { get; set; }

 public string Source { get; set; }

 public string Type { get; set; }

这是我的更新块

var resultMetaData = collection.UpdateOneAsync(Builders<TestClass1>.Filter.Eq(m => m.Id, someID), Builders<TestClass1>.Update.Push("DataUpdates", bsonValue));

和bsonValuse的类型类似

{[{ "Collection" : "TestCollection", "Source" : "TestSource", "Type" : "TestType" }, 2015-06-25T02:51:28.507Z]}

如何在DataUpdates上推送新的bsonValue?如果我们真的需要实现IBsonArraySerializer,那么我们如何实现该序列化器?

1 个答案:

答案 0 :(得分:0)

您是否尝试过ToBsonDocument()将某些类对象转换为BsonValue

你的词典是你的实体吗?意思是,不是创建一个保存属性的对象,而是将它们转储到Dictionary ??

您可以查看两个相关链接:

MongoDB and C# Dictionary Serialisation, Part 1 – The Problem

http://www.danharman.net/2011/09/14/mongodb-and-c-dictionary-serialisation-part-1-the-problem/

How to query a sub document collection using MongoDB and C# driver

How to query/update sub document in MongoDB using C# driver