Threshold of Document size and numbers in Transactional Upsert and alternatives via MongoDB .NET

I need to insert or update multiple documents of 150,000+, total in size of 20+ MB atomically using MongoDB Transaction.

var client = new MongoClient(ConnectionString);
using (var session = await client.StartSessionAsync())
        // execute async operations using the session          
            var database = client.GetDatabase(DatabaseName);

            var carCollection = database.GetCollection<Car>(CarName);
            var writeModels = new List<WriteModel<Car>>();

            foreach (var item in Cars)
                var filter = Builders<Car>.Filter...;
                var update = Builders<Car>.Update...

                var upsert = new UpdateOneModel<Car>(filter, update) { IsUpsert = true };
            await carCollection .BulkWriteAsync(writeModels);
        await session.AbortTransactionAsync(); // now Dispose on the session has nothing to do and won't block
    await session.CommitTransactionAsync();

MongoDB imposes a max limit of 100,000 document on each batch, and 16MB in size, if I remember correctly,


How to get around the limitation of the batch update.