It's an incomplete and highly opinionated abstraction but yet flexible, since you are able to access the driver's API and can work with both ActiveRecord and DataMapper, since this class relies on the Schema and both classes implements HasSchemaInterface.
 public function testShouldSetAndGetMongoBulkWrite()
 {
     // Arrange
     $entity = m::mock(HasSchemaInterface::class);
     $mongoBulkWrite = new MongoBulkWrite();
     // Expect
     $entity->shouldReceive('getSchema')->once();
     // Act
     $bulkWrite = new BulkWrite($entity);
     $bulkWrite->setBulkWrite($mongoBulkWrite);
     // Assert
     $this->assertSame($mongoBulkWrite, $bulkWrite->getBulkWrite());
 }