c# - MongoDB Driver C# 仅反序列化对象内的一半对象键
问题描述
当我使用 MongoDB Driver 2.10 从 MongoDB 数据库加载(/反序列化)对象时,会出现我遇到的问题。当我这样做时,只有一半的模型对象 - 由于某种原因(第 2、第 4、第 6 等)只有偶数对象 - 在 c# 类的 Channel 字典中获取值。
我有一个带有用户对象的 MongoDB 集合。用户对象如下所示:
{
"_id" : ObjectId("5bedfd60502d2c2854d43e6f"),
"displayName" : "User",
"channels" : {
"YouTube" : "userchannel",
"Facebook" : "userchannel",
"Instagram" : "userchannel",
"Twitter" : "userchannel"
}
}
所有用户对象在通道对象中都有有效值
该集合由以下代码加载:
_userCollection = DatabaseService.GetConnection().GetCollection<User>("users");
用户类如下所示:
public class User
{
public ObjectId Id { get; set; }
[BsonElement("displayName")]
public string DisplayName { get; set; }
[BsonElement("channels")]
public BsonDocument channelsDocument { get; set; }}
最后,当我打印每个 Usermodel 对象的信息时,只有一半的 Usermodel 有通道。如果我从集合中单独获得第一个、第三个等,它们仍然没有渠道价值..
我错过了什么吗?我已经尝试了几个小时了..
解决方案
更改此行:
_userCollection = DatabaseService.GetConnection().GetCollection<User>("users");
至:
_userCollection = DatabaseService.GetConnection().GetCollection<User>("users")
.Find(Builders<User>.Filter.Empty).ToList();
下面的例子可以在 LINQPad 上进行测试(我认为它更具可读性):
void Main()
{
var context = new MongoContext();
var filter = Builders<User>.Filter.Empty; // Finds all
//var filter = Builders<User>.Filter.Eq(x => x.Id, ObjectId.Parse("5bedfd60502d2c2854d43e6f"));
var users = context.User.Find(filter).ToList();
users.Dump();
}
public class MongoContext
{
private static readonly IMongoDatabase Database;
static MongoContext()
{
var connectionString = "mongodb://localhost:27017";
IMongoClient client = new MongoClient(connectionString);
Database = client.GetDatabase("your_databse_name");
}
public IMongoCollection<User> User =>
Database.GetCollection<User>("your_collection_name");
}
推荐阅读
- java - Spring:在创建任何 bean 之前初始化属性
- arrays - jq:如何将一个数组中的元素一个一个地添加到另一个数组中
- python - 重复相同数字的 Sikuli RNG 脚本
- zerobrane - ZeroBrane:基于每个文件注册 API
- vb.net - 当代码包含在 < > for Visual Basic 中时
- r - 使用 R 过滤多个数字列基于另一个数字向量
- rust - error[E0554]: #![feature] may not be used on the stable release channel Couldn't install racer using cargo
- html - 有没有办法使 div 的边界相移?
- python - 从 Tkinter 获取文本框条目数据
- c - 当我将相同的代码放入函数与内联 C 编写时,结果不同