如何将简单的 class 解析为 Bson 和 MongoDB 集合
How to parse a simple class to Bson and to a MongoDB collection
我是 C# MongoDB 的新手。
我创建了一个非常简单的 class,我想将其自动插入到集合中。
如果我不想手动映射所有内容,我该怎么做?
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>();
它创造奇迹。
当集合中的字段与您的模型 class 中的属性不匹配时,使用 BsonDocument
是有意义的。否则你应该创建映射到你的 class.
的集合
_collection = _database.GetCollection<DummyClass>("Collection");
await _collection.InsertOneAsync(doc);
并且不要忘记 MongoDB.Driver 中的 async/await 方法。
您可以使用 ToBsonDocument()
_collection.InsertOneAsync(doc.ToBsonDocument())
我是 C# MongoDB 的新手。
我创建了一个非常简单的 class,我想将其自动插入到集合中。
如果我不想手动映射所有内容,我该怎么做?
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>();
它创造奇迹。
当集合中的字段与您的模型 class 中的属性不匹配时,使用 BsonDocument
是有意义的。否则你应该创建映射到你的 class.
_collection = _database.GetCollection<DummyClass>("Collection");
await _collection.InsertOneAsync(doc);
并且不要忘记 MongoDB.Driver 中的 async/await 方法。
您可以使用 ToBsonDocument()
_collection.InsertOneAsync(doc.ToBsonDocument())