22
22
import com .mongodb .ReadPreference ;
23
23
import com .mongodb .WriteConcern ;
24
24
import com .mongodb .client .model .BulkWriteOptions ;
25
+ import com .mongodb .client .model .ClusteredIndexOptions ;
25
26
import com .mongodb .client .model .Collation ;
26
27
import com .mongodb .client .model .CountOptions ;
28
+ import com .mongodb .client .model .CreateCollectionOptions ;
27
29
import com .mongodb .client .model .CreateIndexOptions ;
30
+ import com .mongodb .client .model .CreateViewOptions ;
28
31
import com .mongodb .client .model .DeleteManyModel ;
29
32
import com .mongodb .client .model .DeleteOneModel ;
30
33
import com .mongodb .client .model .DeleteOptions ;
35
38
import com .mongodb .client .model .FindOneAndReplaceOptions ;
36
39
import com .mongodb .client .model .FindOneAndUpdateOptions ;
37
40
import com .mongodb .client .model .IndexModel ;
41
+ import com .mongodb .client .model .IndexOptionDefaults ;
38
42
import com .mongodb .client .model .InsertManyOptions ;
39
43
import com .mongodb .client .model .InsertOneModel ;
40
44
import com .mongodb .client .model .InsertOneOptions ;
45
49
import com .mongodb .client .model .UpdateManyModel ;
46
50
import com .mongodb .client .model .UpdateOneModel ;
47
51
import com .mongodb .client .model .UpdateOptions ;
52
+ import com .mongodb .client .model .ValidationOptions ;
48
53
import com .mongodb .client .model .WriteModel ;
49
54
import com .mongodb .client .model .changestream .FullDocument ;
50
55
import com .mongodb .client .model .changestream .FullDocumentBeforeChange ;
@@ -509,6 +514,64 @@ MixedBulkWriteOperation bulkWrite(final List<? extends WriteModel<? extends TDoc
509
514
.let (toBsonDocument (options .getLet ()));
510
515
}
511
516
517
+ <TResult > CommandReadOperation <TResult > commandRead (final Bson command , final Class <TResult > resultClass ) {
518
+ notNull ("command" , command );
519
+ notNull ("resultClass" , resultClass );
520
+ return new CommandReadOperation <TResult >(namespace .getDatabaseName (), toBsonDocument (command ), codecRegistry .get (resultClass ));
521
+ }
522
+
523
+
524
+ DropDatabaseOperation dropDatabase () {
525
+ return new DropDatabaseOperation (namespace .getDatabaseName (), getWriteConcern ());
526
+ }
527
+
528
+
529
+ CreateCollectionOperation createCollection (final String collectionName , final CreateCollectionOptions createCollectionOptions ,
530
+ final AutoEncryptionSettings autoEncryptionSettings ) {
531
+ CreateCollectionOperation operation = new CreateCollectionOperation (namespace .getDatabaseName (), collectionName , writeConcern )
532
+ .collation (createCollectionOptions .getCollation ())
533
+ .capped (createCollectionOptions .isCapped ())
534
+ .sizeInBytes (createCollectionOptions .getSizeInBytes ())
535
+ .maxDocuments (createCollectionOptions .getMaxDocuments ())
536
+ .storageEngineOptions (toBsonDocument (createCollectionOptions .getStorageEngineOptions ()))
537
+ .expireAfter (createCollectionOptions .getExpireAfter (TimeUnit .SECONDS ))
538
+ .timeSeriesOptions (createCollectionOptions .getTimeSeriesOptions ())
539
+ .changeStreamPreAndPostImagesOptions (createCollectionOptions .getChangeStreamPreAndPostImagesOptions ());
540
+
541
+ ClusteredIndexOptions clusteredIndexOptions = createCollectionOptions .getClusteredIndexOptions ();
542
+ if (clusteredIndexOptions != null ) {
543
+ operation .clusteredIndexKey (toBsonDocument (clusteredIndexOptions .getKey ()));
544
+ operation .clusteredIndexUnique (clusteredIndexOptions .isUnique ());
545
+ operation .clusteredIndexName (clusteredIndexOptions .getName ());
546
+ }
547
+
548
+ Bson encryptedFields = createCollectionOptions .getEncryptedFields ();
549
+ operation .encryptedFields (toBsonDocument (encryptedFields ));
550
+ if (encryptedFields == null && autoEncryptionSettings != null ) {
551
+ Map <String , BsonDocument > encryptedFieldsMap = autoEncryptionSettings .getEncryptedFieldsMap ();
552
+ if (encryptedFieldsMap != null ) {
553
+ operation .encryptedFields (encryptedFieldsMap .getOrDefault (namespace .getDatabaseName () + "." + collectionName , null ));
554
+ }
555
+ }
556
+
557
+ IndexOptionDefaults indexOptionDefaults = createCollectionOptions .getIndexOptionDefaults ();
558
+ Bson storageEngine = indexOptionDefaults .getStorageEngine ();
559
+ if (storageEngine != null ) {
560
+ operation .indexOptionDefaults (new BsonDocument ("storageEngine" , toBsonDocument (storageEngine )));
561
+ }
562
+ ValidationOptions validationOptions = createCollectionOptions .getValidationOptions ();
563
+ Bson validator = validationOptions .getValidator ();
564
+ if (validator != null ) {
565
+ operation .validator (toBsonDocument (validator ));
566
+ }
567
+ if (validationOptions .getValidationLevel () != null ) {
568
+ operation .validationLevel (validationOptions .getValidationLevel ());
569
+ }
570
+ if (validationOptions .getValidationAction () != null ) {
571
+ operation .validationAction (validationOptions .getValidationAction ());
572
+ }
573
+ return operation ;
574
+ }
512
575
513
576
DropCollectionOperation dropCollection (
514
577
final DropCollectionOptions dropCollectionOptions ,
@@ -534,6 +597,13 @@ RenameCollectionOperation renameCollection(final MongoNamespace newCollectionNam
534
597
.dropTarget (renameCollectionOptions .isDropTarget ());
535
598
}
536
599
600
+ CreateViewOperation createView (final String viewName , final String viewOn , final List <? extends Bson > pipeline ,
601
+ final CreateViewOptions createViewOptions ) {
602
+ notNull ("options" , createViewOptions );
603
+ return new CreateViewOperation (namespace .getDatabaseName (), viewName , viewOn , toBsonDocumentList (pipeline ), writeConcern )
604
+ .collation (createViewOptions .getCollation ());
605
+ }
606
+
537
607
@ SuppressWarnings ("deprecation" )
538
608
CreateIndexesOperation createIndexes (final List <IndexModel > indexes , final CreateIndexOptions createIndexOptions ) {
539
609
notNull ("indexes" , indexes );
0 commit comments