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

本文关键字:Bson 集合 MongoDB 简单 一个 | 更新日期: 2023-09-27 17:55:16

我是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>();

它确实有奇迹。

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

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

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

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

您可以使用 ToBsonDocument()

_collection.InsertOneAsync(doc.ToBsonDocument())