In my recent posts I’ve been trying to learn a little about MongoDB, and the API. Whilst trying to insert data into a MongoDB database, I got an error; and, since I couldn’t really find anything about it on the internet, I thought I’d add something.
Here’s the code that I initially (and incorrectly) tried to use to insert a record:
var newData = new MyData() { SomeDate = myDate, Text = "hello" }; var document = BsonDocument.Create(newData); var collection = _db.GetCollection<BsonDocument>("testcollection"); await collection.InsertOneAsync(document); return newData.Id.ToString();
If you execute the code above, you’ll get the following error:
System.ArgumentException: ‘.NET type MyApp.Entities.MyData cannot be mapped to BsonType.Document. ‘
In fact, the issue is caused because you need to convert the data into a BSON document first; like so:
var newData = new MyData() { SomeDate = myDate, Text = "hello" }; var bson = newData.ToBsonDocument(); var document = BsonDocument.Create(bson); var collection = _db.GetCollection<BsonDocument>("testcollection"); await collection.InsertOneAsync(document); return newData.Id.ToString();