c# - Mongodb:将 c# 对象列表存储到 mongo
问题描述
我有具有 type 属性的 ac# 类List<object>
。
public class Result
{
public int Type { get; set; }
public string Key { get; set; }
public string Table{get;set;}
public List<object> TableHeaderKey {get;set;}
public List<LocationVariance> locationVariance { get; set; }
}
我正在尝试将此保存到 mongo 集合
public async Task<T> Add<T>(T obj, string collectionName)
{
var session = __client.StartSession();
var document = obj.ToBsonDocument();
session.StartTransaction();
var collection = __database.GetCollection<BsonDocument>(collectionName);
await collection.InsertOneAsync(document);
session.CommitTransaction();
}
这些值存储在 db 中,但属性 TableHeaderKey 的值存储如下。
"TableHeaderKey" : [
{
"_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
"_v" : {
"Item" : {
"_t" : "JArray",
"_v" : [
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
}
]
}
}
},
{
"_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
"_v" : {
"Description" : {
"_t" : "JArray",
"_v" : [
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
}
]
}
}
},
{
"_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
"_v" : {
"Delivery" : {
"_t" : "JArray",
"_v" : [
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
},
{
"_t" : "JValue",
"_v" : [ ]
}
]
}
}
}
]
TableHeaderKey 属性的值。
"tableHeaderKey": [
{
"Line": [
136,
242,
1179,
1213
]
},
{
"Supplier Part / Item Number": [
265,
760,
1177,
1219
]
},
{
"Item Description": [
949,
1245,
1179,
1219
]
}
{
"Unit Price": [
1991,
2183,
1179,
1213
]
},
{
"Line Total": [
2212,
2403,
1178,
1213
]
}
]
在从 mongo 获取值时出现以下错误:
System.FormatException:反序列化类结果的 TableHeaderKey 属性时出错:类型“Newtonsoft.Json.Linq.JToken”没有合适的构造函数或 Add 方法。---> MongoDB.Bson.BsonSerializationException:类型“Newtonsoft.Json.Linq.JToken”没有合适的构造函数或 Add 方法。在 MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer 2.FinalizeResult(Object accumulator) at MongoDB.Bson.Serialization.Serializers.EnumerableSerializerBase
2.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) 在 MongoDB.Bson.Serialization.Serializers.SerializerBase 1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) at MongoDB.Bson.Serialization.Serializers.DiscriminatedWrapperSerializer
1.<>c__DisplayClass6_0.b__0(String elementName, Int64 flag) 在 MongoDB.Bson.Serialization .Serializers.SerializerHelper.DeserializeMembers(BsonDeserializationContext 上下文,Action`2 memberHandler)
任何帮助表示赞赏。谢谢
解决方案
推荐阅读
- r - 匹配字符串而不是 str_detect
- ios - 如何解决iOS12上的集合视图中的错误更新无效:第0节中的项目数不正确?
- pandas - 根据一组列中的首选项和另一组列中的可用资源定义新列
- python - SQLAlchemy 查询适用于 SQLite,但在 PostgreSQL 上会出错:列必须出现在 GROUP BY 子句中或用于聚合函数
- powershell - Powershell while循环不能被打破
- python - Pandas:从非常规时间戳中提取日期 -- YYY/MM/DD:HH:MM:SS AM
- firebase - Flutter:Firebase:Crashlytics:如何解码由 Cloud_Firestore 引起的崩溃?我的崩溃 100% 是由“CloudFirestorePlugin.java”引起的
- java - Spring security:在方法中获取经过身份验证的用户
- node.js - "npm run build" = "react-scripts: Permission denied"
- c++ - 非零随机数的乘法