@@ -908,19 +908,38 @@ public void TestFindAndModify()
908
908
_collection . RemoveAll ( ) ;
909
909
_collection . Insert ( new BsonDocument { { "_id" , 1 } , { "priority" , 1 } , { "inprogress" , false } , { "name" , "abc" } } ) ;
910
910
_collection . Insert ( new BsonDocument { { "_id" , 2 } , { "priority" , 2 } , { "inprogress" , false } , { "name" , "def" } } ) ;
911
+ _collection . Insert ( new BsonDocument { { "_id" , 3 } , { "priority" , 3 } , { "inprogress" , false } , { "name" , "ghi" } } ) ;
911
912
912
913
913
914
var started = DateTime . UtcNow ;
914
915
started = started . AddTicks ( - ( started . Ticks % 10000 ) ) ; // adjust for MongoDB DateTime precision
915
916
var args = new FindAndModifyArgs
917
+ {
918
+ BypassDocumentValidation = true ,
919
+ Query = Query . EQ ( "inprogress" , false ) ,
920
+ SortBy = SortBy . Descending ( "priority" ) ,
921
+ Update = Update . Set ( "inprogress" , true ) . Set ( "started" , started )
922
+ } ;
923
+ var result = _collection . FindAndModify ( args ) ;
924
+
925
+ Assert . True ( result . Ok ) ;
926
+ Assert . Equal ( 3 , result . ModifiedDocument [ "_id" ] . AsInt32 ) ;
927
+ Assert . Equal ( 3 , result . ModifiedDocument [ "priority" ] . AsInt32 ) ;
928
+ Assert . Equal ( false , result . ModifiedDocument [ "inprogress" ] . AsBoolean ) ;
929
+ Assert . Equal ( "ghi" , result . ModifiedDocument [ "name" ] . AsString ) ;
930
+ Assert . False ( result . ModifiedDocument . Contains ( "started" ) ) ;
931
+
932
+ started = DateTime . UtcNow ;
933
+ started = started . AddTicks ( - ( started . Ticks % 10000 ) ) ; // adjust for MongoDB DateTime precision
934
+ args = new FindAndModifyArgs
916
935
{
917
936
BypassDocumentValidation = true ,
918
937
Query = Query . EQ ( "inprogress" , false ) ,
919
938
SortBy = SortBy . Descending ( "priority" ) ,
920
939
Update = Update . Set ( "inprogress" , true ) . Set ( "started" , started ) ,
921
940
VersionReturned = FindAndModifyDocumentVersion . Original
922
941
} ;
923
- var result = _collection . FindAndModify ( args ) ;
942
+ result = _collection . FindAndModify ( args ) ;
924
943
925
944
Assert . True ( result . Ok ) ;
926
945
Assert . Equal ( 2 , result . ModifiedDocument [ "_id" ] . AsInt32 ) ;
0 commit comments