@@ -56,9 +56,9 @@ impl Arguments {
5656 pub fn aggregate_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
5757 let options = AggregateOptions :: from_json ( object) ;
5858
59- let array = val_or_err ! ( object. get( "pipeline" ) . map( Bson :: from_json ) ,
60- Some ( Bson :: Array ( arr) ) => arr,
61- "`aggregate` requires pipeline array" ) ;
59+ let array = val_or_err ! ( object. get( "pipeline" ) . map( Value :: clone ) . map ( Into :: into ) ,
60+ Some ( Bson :: Array ( arr) ) => arr,
61+ "`aggregate` requires pipeline array" ) ;
6262
6363 let mut docs = vec ! [ ] ;
6464 let mut out = false ;
@@ -85,7 +85,7 @@ impl Arguments {
8585 pub fn count_from_json ( object : & Map < String , Value > ) -> Arguments {
8686 let options = CountOptions :: from_json ( object) ;
8787
88- let filter = match object. get ( "filter" ) . map ( Bson :: from_json ) {
88+ let filter = match object. get ( "filter" ) . map ( Value :: clone ) . map ( Into :: into ) {
8989 Some ( Bson :: Document ( doc) ) => Some ( doc) ,
9090 _ => None ,
9191 } ;
@@ -97,7 +97,7 @@ impl Arguments {
9797 }
9898
9999 pub fn delete_from_json ( object : & Map < String , Value > , many : bool ) -> Result < Arguments , String > {
100- let document = val_or_err ! ( object. get( "filter" ) . map( Bson :: from_json ) ,
100+ let document = val_or_err ! ( object. get( "filter" ) . map( Value :: clone ) . map ( Into :: into ) ,
101101 Some ( Bson :: Document ( doc) ) => doc,
102102 "`delete` requires document" ) ;
103103
@@ -108,11 +108,11 @@ impl Arguments {
108108 }
109109
110110 pub fn distinct_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
111- let field_name = val_or_err ! ( object. get( "fieldName" ) . map( Bson :: from_json ) ,
111+ let field_name = val_or_err ! ( object. get( "fieldName" ) . map( Value :: clone ) . map ( Into :: into ) ,
112112 Some ( Bson :: String ( ref s) ) => s. to_owned( ) ,
113113 "`distinct` requires field name" ) ;
114114
115- let filter = match object. get ( "filter" ) . map ( Bson :: from_json ) {
115+ let filter = match object. get ( "filter" ) . map ( Value :: clone ) . map ( Into :: into ) {
116116 Some ( Bson :: Document ( doc) ) => Some ( doc) ,
117117 _ => None ,
118118 } ;
@@ -126,7 +126,7 @@ impl Arguments {
126126 pub fn find_from_json ( object : & Map < String , Value > ) -> Arguments {
127127 let options = FindOptions :: from_json ( object) ;
128128
129- let filter = match object. get ( "filter" ) . map ( Bson :: from_json ) {
129+ let filter = match object. get ( "filter" ) . map ( Value :: clone ) . map ( Into :: into ) {
130130 Some ( Bson :: Document ( doc) ) => Some ( doc) ,
131131 _ => None ,
132132 } ;
@@ -140,7 +140,7 @@ impl Arguments {
140140 pub fn find_one_and_delete_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
141141 let options = FindOneAndDeleteOptions :: from_json ( object) ;
142142
143- let filter = val_or_err ! ( object. get( "filter" ) . map( Bson :: from_json ) ,
143+ let filter = val_or_err ! ( object. get( "filter" ) . map( Value :: clone ) . map ( Into :: into ) ,
144144 Some ( Bson :: Document ( doc) ) => doc,
145145 "`find_one_and_delete` requires filter document" ) ;
146146
@@ -153,11 +153,11 @@ impl Arguments {
153153 pub fn find_one_and_replace_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
154154 let options = FindOneAndUpdateOptions :: from_json ( object) ;
155155
156- let filter = val_or_err ! ( object. get( "filter" ) . map( Bson :: from_json ) ,
156+ let filter = val_or_err ! ( object. get( "filter" ) . map( Value :: clone ) . map ( Into :: into ) ,
157157 Some ( Bson :: Document ( doc) ) => doc,
158158 "`find_one_and_update` requires filter document" ) ;
159159
160- let replacement = val_or_err ! ( object. get( "replacement" ) . map( Bson :: from_json ) ,
160+ let replacement = val_or_err ! ( object. get( "replacement" ) . map( Value :: clone ) . map ( Into :: into ) ,
161161 Some ( Bson :: Document ( doc) ) => doc,
162162 "`find_one_and_replace` requires replacement document" ) ;
163163
@@ -171,11 +171,11 @@ impl Arguments {
171171 pub fn find_one_and_update_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
172172 let options = FindOneAndUpdateOptions :: from_json ( object) ;
173173
174- let filter = val_or_err ! ( object. get( "filter" ) . map( Bson :: from_json ) ,
174+ let filter = val_or_err ! ( object. get( "filter" ) . map( Value :: clone ) . map ( Into :: into ) ,
175175 Some ( Bson :: Document ( doc) ) => doc,
176176 "`find_one_and_update` requires filter document" ) ;
177177
178- let update = val_or_err ! ( object. get( "update" ) . map( Bson :: from_json ) ,
178+ let update = val_or_err ! ( object. get( "update" ) . map( Value :: clone ) . map ( Into :: into ) ,
179179 Some ( Bson :: Document ( doc) ) => doc,
180180 "`find_one_and_update` requires update document" ) ;
181181
@@ -187,7 +187,7 @@ impl Arguments {
187187 }
188188
189189 pub fn insert_many_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
190- let bsons = val_or_err ! ( object. get( "documents" ) . map( Bson :: from_json ) ,
190+ let bsons = val_or_err ! ( object. get( "documents" ) . map( Value :: clone ) . map ( Into :: into ) ,
191191 Some ( Bson :: Array ( arr) ) => arr,
192192 "`insert_many` requires documents" ) ;
193193
@@ -204,23 +204,23 @@ impl Arguments {
204204 }
205205
206206 pub fn insert_one_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
207- let document = val_or_err ! ( object. get( "document" ) . map( Bson :: from_json ) ,
207+ let document = val_or_err ! ( object. get( "document" ) . map( Value :: clone ) . map ( Into :: into ) ,
208208 Some ( Bson :: Document ( doc) ) => doc,
209209 "`delete_one` requires document" ) ;
210210
211211 Ok ( Arguments :: InsertOne { document : document } )
212212 }
213213
214214 pub fn replace_one_from_json ( object : & Map < String , Value > ) -> Result < Arguments , String > {
215- let filter = val_or_err ! ( object. get( "filter" ) . map( Bson :: from_json ) ,
215+ let filter = val_or_err ! ( object. get( "filter" ) . map( Value :: clone ) . map ( Into :: into ) ,
216216 Some ( Bson :: Document ( doc) ) => doc,
217217 "`update` requires filter document" ) ;
218218
219- let replacement = val_or_err ! ( object. get( "replacement" ) . map( Bson :: from_json ) ,
219+ let replacement = val_or_err ! ( object. get( "replacement" ) . map( Value :: clone ) . map ( Into :: into ) ,
220220 Some ( Bson :: Document ( doc) ) => doc,
221221 "`update` requires update document" ) ;
222222
223- let upsert = var_match ! ( object. get( "upsert" ) . map( Bson :: from_json ) ,
223+ let upsert = var_match ! ( object. get( "upsert" ) . map( Value :: clone ) . map ( Into :: into ) ,
224224 Some ( Bson :: Boolean ( b) ) => b) ;
225225
226226 Ok ( Arguments :: ReplaceOne {
@@ -231,15 +231,15 @@ impl Arguments {
231231 }
232232
233233 pub fn update_from_json ( object : & Map < String , Value > , many : bool ) -> Result < Arguments , String > {
234- let filter = val_or_err ! ( object. get( "filter" ) . map( Bson :: from_json ) ,
234+ let filter = val_or_err ! ( object. get( "filter" ) . map( Value :: clone ) . map ( Into :: into ) ,
235235 Some ( Bson :: Document ( doc) ) => doc,
236236 "`update` requires filter document" ) ;
237237
238- let update = val_or_err ! ( object. get( "update" ) . map( Bson :: from_json ) ,
238+ let update = val_or_err ! ( object. get( "update" ) . map( Value :: clone ) . map ( Into :: into ) ,
239239 Some ( Bson :: Document ( doc) ) => doc,
240240 "`update` requires update document" ) ;
241241
242- let upsert = var_match ! ( object. get( "upsert" ) . map( Bson :: from_json ) ,
242+ let upsert = var_match ! ( object. get( "upsert" ) . map( Value :: clone ) . map ( Into :: into ) ,
243243 Some ( Bson :: Boolean ( b) ) => b) ;
244244
245245 Ok ( Arguments :: Update {
0 commit comments