c# - 如何将一个简单的类解析为 Bson 和 MongoDB 集合

标签 c# mongodb bson

我是 C# 中 MongoDB 的新手。

我创建了一个非常简单的类,我想将其自动插入到集合中。

如果我不想手动映射所有内容,我该怎么做?

public class DummyClass
{
    [BsonId]        
    public int Id { set; get; }

    [BsonElement("first")]
    public string First { set { _name = value; } }

    [BsonConstructor]
    public DummyClass()
    {
        Id = 2;
        First = "1";
    }
}

我曾希望我能做这样的事情:

_dbClient = new MongoClient();
_database = _dbClient.GetDatabase("testDB");
_collection = _database.GetCollection<BsonDocument>("Collection");

var doc = BsonDocument.Create(dummy);
_collection.InsertOneAsync(doc);

但是这样不好。我得到异常:

System.ArgumentException : .NET type DummyClass cannot be mapped to BsonType.Document. 
Parameter name: value

有什么建议吗?

我真的不想做:

{
    {"Id", "2"},
    {"First", "1"},
}

编辑: 我忘了这条小线:

BsonClassMap.RegisterClassMap<DummyClass>();

它创造奇迹。

最佳答案

当集合中的字段与模型类中的属性不匹配时,使用 BsonDocument 是有意义的。否则你应该创建映射到你的类的集合。

_collection = _database.GetCollection<DummyClass>("Collection");
await _collection.InsertOneAsync(doc);

并且不要忘记 MongoDB.Driver 中的 async/await 方法。

关于c# - 如何将一个简单的类解析为 Bson 和 MongoDB 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30754635/

相关文章:

C#:有没有一种方法可以在不使用正则表达式的情况下搜索字符串中的数字?

swift - SPM - 包包含修改后的依赖项

java - 为什么bson java实现使用4字节inc字段?

javascript - meteor 路线未注册

c# - 如何以编程方式关闭对话框

c# - 如果可为 null 的属性为 null 或为空,如何从序列化中忽略它?

c# - Selenium C# 查找警报并验证文本

javascript - MongoDb 聚合 $match 错误 : "Arguments must be aggregate pipeline operators"

java - 有没有办法更新 MongoDB 中的整个实体?

mongodb - 如何使用Golang比较两个bson.M数据集