gpt4 book ai didi

c# - 使用 c# 驱动程序将字典插入 MongoDB

转载 作者:IT老高 更新时间:2023-10-28 13:11:44 25 4
gpt4 key购买 nike

我无法预测我的 MongoDB 文档将包含哪些字段。所以我不能再用 BsonID 类型的 _id 字段创建对象。我发现创建一个 Dictionary (HashTable) 并在其中添加我的 DateTime 和 String 对象非常方便,我需要多少次都可以。

然后我尝试将生成的 Dictionary 对象插入 MongoDb,但默认序列化失败。

这是我的 HashTable 类型对象(类似于字典,但里面有不同的类型):

{ "_id":"",
"metadata1":"asaad",
"metadata2":[],
"metadata3":ISODate("somedatehere")}

我得到的驱动程序的错误是:

Serializer DictionarySerializer expected serialization options of type DictionarySerializationOptions, not DocumentSerializationOptions

我用谷歌搜索了它,但找不到任何有用的东西。我做错了什么?

最佳答案

驱动程序需要能够找到 _id 字段。您可以创建一个只有两个属性的 C# 类:Id 和 Values。

public class HashTableDocument
{
public ObjectId Id { get; set; }
[BsonExtraElements]
public Dictionary<string, object> Values { get; set; }

}

请注意,我们必须使用 Dictionary 而不是 Hashtable。

然后您可以使用如下代码插入文档:

var document = new HashTableDocument
{
Id = ObjectId.GenerateNewId(),
Values = new Dictionary<string, object>
{
{ "metadata1", "asaad" },
{ "metadata2", new object[0] },
{ "metadata3", DateTime.UtcNow }
}
};
collection.Insert(document);

我们可以使用 MongoDB shell 来确认插入的文档是否具有所需的形式:

> db.test.find().pretty()
{
"_id" : ObjectId("518abdd4e447ad1f78f74fb1"),
"metadata1" : "asaad",
"metadata2" : [ ],
"metadata3" : ISODate("2013-05-08T21:04:20.895Z")
}
>

关于c# - 使用 c# 驱动程序将字典插入 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15954710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com