23
23
use MongoDB \BSON \JavascriptInterface ;
24
24
use MongoDB \BSON \PackedArray ;
25
25
use MongoDB \Builder \BuilderEncoder ;
26
+ use MongoDB \Builder \Pipeline ;
26
27
use MongoDB \Codec \DocumentCodec ;
27
28
use MongoDB \Codec \Encoder ;
28
29
use MongoDB \Driver \CursorInterface ;
@@ -221,8 +222,9 @@ public function __toString()
221
222
* @throws InvalidArgumentException for parameter/option parsing errors
222
223
* @throws DriverRuntimeException for other driver errors (e.g. connection errors)
223
224
*/
224
- public function aggregate (array $ pipeline , array $ options = [])
225
+ public function aggregate (array | Pipeline $ pipeline , array $ options = [])
225
226
{
227
+ $ pipeline = $ this ->builderEncoder ->encodeIfSupported ($ pipeline );
226
228
$ hasWriteStage = is_last_pipeline_operator_write ($ pipeline );
227
229
228
230
$ options = $ this ->inheritReadPreference ($ options );
@@ -262,6 +264,7 @@ public function aggregate(array $pipeline, array $options = [])
262
264
*/
263
265
public function bulkWrite (array $ operations , array $ options = [])
264
266
{
267
+ $ options = $ this ->inheritBuilderEncoder ($ options );
265
268
$ options = $ this ->inheritWriteOptions ($ options );
266
269
$ options = $ this ->inheritCodec ($ options );
267
270
@@ -286,6 +289,7 @@ public function bulkWrite(array $operations, array $options = [])
286
289
*/
287
290
public function count (array |object $ filter = [], array $ options = [])
288
291
{
292
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
289
293
$ options = $ this ->inheritReadOptions ($ options );
290
294
291
295
$ operation = new Count ($ this ->databaseName , $ this ->collectionName , $ filter , $ options );
@@ -307,6 +311,7 @@ public function count(array|object $filter = [], array $options = [])
307
311
*/
308
312
public function countDocuments (array |object $ filter = [], array $ options = [])
309
313
{
314
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
310
315
$ options = $ this ->inheritReadOptions ($ options );
311
316
312
317
$ operation = new CountDocuments ($ this ->databaseName , $ this ->collectionName , $ filter , $ options );
@@ -444,6 +449,7 @@ public function createSearchIndexes(array $indexes, array $options = []): array
444
449
*/
445
450
public function deleteMany (array |object $ filter , array $ options = [])
446
451
{
452
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
447
453
$ options = $ this ->inheritWriteOptions ($ options );
448
454
449
455
$ operation = new DeleteMany ($ this ->databaseName , $ this ->collectionName , $ filter , $ options );
@@ -465,6 +471,7 @@ public function deleteMany(array|object $filter, array $options = [])
465
471
*/
466
472
public function deleteOne (array |object $ filter , array $ options = [])
467
473
{
474
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
468
475
$ options = $ this ->inheritWriteOptions ($ options );
469
476
470
477
$ operation = new DeleteOne ($ this ->databaseName , $ this ->collectionName , $ filter , $ options );
@@ -487,6 +494,7 @@ public function deleteOne(array|object $filter, array $options = [])
487
494
*/
488
495
public function distinct (string $ fieldName , array |object $ filter = [], array $ options = [])
489
496
{
497
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
490
498
$ options = $ this ->inheritReadOptions ($ options );
491
499
$ options = $ this ->inheritTypeMap ($ options );
492
500
@@ -645,6 +653,7 @@ public function explain(Explainable $explainable, array $options = [])
645
653
*/
646
654
public function find (array |object $ filter = [], array $ options = [])
647
655
{
656
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
648
657
$ options = $ this ->inheritReadOptions ($ options );
649
658
$ options = $ this ->inheritCodecOrTypeMap ($ options );
650
659
@@ -667,6 +676,7 @@ public function find(array|object $filter = [], array $options = [])
667
676
*/
668
677
public function findOne (array |object $ filter = [], array $ options = [])
669
678
{
679
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
670
680
$ options = $ this ->inheritReadOptions ($ options );
671
681
$ options = $ this ->inheritCodecOrTypeMap ($ options );
672
682
@@ -692,6 +702,7 @@ public function findOne(array|object $filter = [], array $options = [])
692
702
*/
693
703
public function findOneAndDelete (array |object $ filter , array $ options = [])
694
704
{
705
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
695
706
$ options = $ this ->inheritWriteOptions ($ options );
696
707
$ options = $ this ->inheritCodecOrTypeMap ($ options );
697
708
@@ -722,6 +733,7 @@ public function findOneAndDelete(array|object $filter, array $options = [])
722
733
*/
723
734
public function findOneAndReplace (array |object $ filter , array |object $ replacement , array $ options = [])
724
735
{
736
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
725
737
$ options = $ this ->inheritWriteOptions ($ options );
726
738
$ options = $ this ->inheritCodecOrTypeMap ($ options );
727
739
@@ -752,6 +764,7 @@ public function findOneAndReplace(array|object $filter, array|object $replacemen
752
764
*/
753
765
public function findOneAndUpdate (array |object $ filter , array |object $ update , array $ options = [])
754
766
{
767
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
755
768
$ options = $ this ->inheritWriteOptions ($ options );
756
769
$ options = $ this ->inheritCodecOrTypeMap ($ options );
757
770
@@ -1000,6 +1013,7 @@ public function rename(string $toCollectionName, ?string $toDatabaseName = null,
1000
1013
*/
1001
1014
public function replaceOne (array |object $ filter , array |object $ replacement , array $ options = [])
1002
1015
{
1016
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
1003
1017
$ options = $ this ->inheritWriteOptions ($ options );
1004
1018
$ options = $ this ->inheritCodec ($ options );
1005
1019
@@ -1023,6 +1037,8 @@ public function replaceOne(array|object $filter, array|object $replacement, arra
1023
1037
*/
1024
1038
public function updateMany (array |object $ filter , array |object $ update , array $ options = [])
1025
1039
{
1040
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
1041
+ $ update = $ this ->builderEncoder ->encodeIfSupported ($ update );
1026
1042
$ options = $ this ->inheritWriteOptions ($ options );
1027
1043
1028
1044
$ operation = new UpdateMany ($ this ->databaseName , $ this ->collectionName , $ filter , $ update , $ options );
@@ -1045,6 +1061,8 @@ public function updateMany(array|object $filter, array|object $update, array $op
1045
1061
*/
1046
1062
public function updateOne (array |object $ filter , array |object $ update , array $ options = [])
1047
1063
{
1064
+ $ filter = $ this ->builderEncoder ->encodeIfSupported ($ filter );
1065
+ $ update = $ this ->builderEncoder ->encodeIfSupported ($ update );
1048
1066
$ options = $ this ->inheritWriteOptions ($ options );
1049
1067
1050
1068
$ operation = new UpdateOne ($ this ->databaseName , $ this ->collectionName , $ filter , $ update , $ options );
@@ -1080,8 +1098,9 @@ public function updateSearchIndex(string $name, array|object $definition, array
1080
1098
* @return ChangeStream
1081
1099
* @throws InvalidArgumentException for parameter/option parsing errors
1082
1100
*/
1083
- public function watch (array $ pipeline = [], array $ options = [])
1101
+ public function watch (array | Pipeline $ pipeline = [], array $ options = [])
1084
1102
{
1103
+ $ pipeline = $ this ->builderEncoder ->encodeIfSupported ($ pipeline );
1085
1104
$ options = $ this ->inheritReadOptions ($ options );
1086
1105
$ options = $ this ->inheritCodecOrTypeMap ($ options );
1087
1106
@@ -1112,6 +1131,13 @@ public function withOptions(array $options = [])
1112
1131
return new Collection ($ this ->manager , $ this ->databaseName , $ this ->collectionName , $ options );
1113
1132
}
1114
1133
1134
+ private function inheritBuilderEncoder (array $ options ): array
1135
+ {
1136
+ $ options ['builderEncoder ' ] = $ this ->builderEncoder ;
1137
+
1138
+ return $ options ;
1139
+ }
1140
+
1115
1141
private function inheritCodec (array $ options ): array
1116
1142
{
1117
1143
// If the options contain a type map, don't inherit anything
0 commit comments