If I use IMongoCollection<BsonValue> rather than IMongoCollection<BsonDocument>, and use the InsertOne method to add a document which does not specify its own "_id" value, then InsertOne fails to insert the auto-generated "_id" member into the document object.
MongoClient myClient = new MongoDB.Driver.MongoClient(ConnectionConf);
var myDB = myClient.GetDatabase(DBName);
bool avoidBug = false;
if (avoidBug)
{
IMongoCollection<BsonDocument> myCollectionGood = myDB.GetCollection<BsonDocument>(CollectionName);
// InsertOne modifies doc as expected: it adds an "_id" member
myCollectionGood.InsertOne(doc);
}
else
{
IMongoCollection<BsonValue> myCollectionBad = myDB.GetCollection<BsonValue>(CollectionName);
// InsertOne fails to modify doc: it does not add the "_id" member
myCollectionBad.InsertOne(doc);
}