使用c#驱动程序将Dictionary插入MongoDB
我处于无法预测MongoDB文档将包含哪些字段的情况。 所以我不能再创建一个具有BsonID
类型的_id
字段的BsonID
。 我发现创建一个Dictionary(HashTable)并在我的需要中多次添加我的DateTime和String对象非常方便。
然后我尝试将生成的Dictionary对象插入MongoDb,但默认序列化失败。
这是我的类型HashTable的对象(像一个字典,但里面有不同的类型):
{ "_id":"", "metadata1":"asaad", "metadata2":[], "metadata3":ISODate("somedatehere")}
而我得到的驱动程序的错误是:
Serializer DictionarySerializer期望类型为DictionarySerializationOptions的序列化选项,而不是DocumentSerializationOptions
我用Google搜索,但找不到任何有用的东西。 我究竟做错了什么?
驱动程序需要能够找到_id字段。 您可以创建一个只有两个属性的C#类:Id和Values。
public class HashTableDocument { public ObjectId Id { get; set; } [BsonExtraElements] public Dictionary Values { get; set; } }
请注意,我们必须使用Dictionary
然后,您可以使用以下代码插入文档:
var document = new HashTableDocument { Id = ObjectId.GenerateNewId(), Values = new Dictionary { { "metadata1", "asaad" }, { "metadata2", new object[0] }, { "metadata3", DateTime.UtcNow } } }; collection.Insert(document);
我们可以使用MongoDB shell来确认插入的文档是否具有所需的forms:
上述就是C#学习教程:使用c#驱动程序将Dictionary插入MongoDB分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
> db.test.find().pretty() { "_id" : ObjectId("518abdd4e447ad1f78f74fb1"), "metadata1" : "asaad", "metadata2" : [ ], "metadata3" : ISODate("2013-05-08T21:04:20.895Z") } >
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1014408.html