1- use chrono :: { Utc } ;
2- use mongodb:: { Client , Collection } ;
3- use serde:: { Deserialize , Serialize } ;
1+ use bson :: { doc , DateTime } ;
2+ use mongodb:: { Client , Collection } ;
3+ use serde:: { Deserialize , Serialize } ;
44
55#[ tokio:: main]
66async fn main ( ) -> mongodb:: error:: Result < ( ) > {
77 let uri: & str = "<connection string>" ;
88
9- let client: Client = Client :: with_uri_str ( uri) . await ?;
9+ let client = Client :: with_uri_str ( uri) . await ?;
1010
1111 // begin-insert
1212 let my_coll: Collection < Document > = client. database ( "db" ) . collection ( "site_users" ) ;
1313
1414 let docs = vec ! [
15- doc! { "name" : "Sonya Mehta" , "age" : 23 , "genre_interests" : vec![ "fiction" , "mystery" , "memoir" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 5 , 13 , 0 , 0 , 0 ) . unwrap( ) } ,
16- doc! { "name" : "Selena Sun" , "age" : 45 , "genre_interests" : vec![ "fiction" , "literary" , "theory" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 5 , 25 , 0 , 0 , 0 ) . unwrap( ) } ,
17- doc! { "name" : "Carter Johnson" , "age" : 56 , "genre_interests" : vec![ "literary" , "self help" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 5 , 31 , 0 , 0 , 0 ) . unwrap( ) } ,
18- doc! { "name" : "Rick Cortes" , "age" : 18 , "genre_interests" : vec![ "sci-fi" , "fantasy" , "memoir" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 7 , 1 , 0 , 0 , 0 ) . unwrap( ) } ,
19- doc! { "name" : "Belinda James" , "age" : 76 , "genre_interests" : vec![ "literary" , "nonfiction" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 6 , 11 , 0 , 0 , 0 ) . unwrap( ) } ,
20- doc! { "name" : "Corey Saltz" , "age" : 29 , "genre_interests" : vec![ "fiction" , "sports" , "memoir" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 1 , 23 , 0 , 0 , 0 ) . unwrap( ) } ,
21- doc! { "name" : "John Soo" , "age" : 16 , "genre_interests" : vec![ "fiction" , "sports" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 1 , 3 , 0 , 0 , 0 ) . unwrap( ) } ,
22- doc! { "name" : "Lisa Ray" , "age" : 39 , "genre_interests" : vec![ "poetry" , "art" , "memoir" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 5 , 30 , 0 , 0 , 0 ) . unwrap( ) } ,
23- doc! { "name" : "Kiran Murray" , "age" : 20 , "genre_interests" : vec![ "mystery" , "fantasy" , "memoir" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 1 , 30 , 0 , 0 , 0 ) . unwrap( ) } ,
24- doc! { "name" : "Beth Carson" , "age" : 31 , "genre_interests" : vec![ "mystery" , "nonfiction" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 8 , 4 , 0 , 0 , 0 ) . unwrap( ) } ,
25- doc! { "name" : "Thalia Dorn" , "age" : 21 , "genre_interests" : vec![ "theory" , "literary" , "fiction" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 8 , 19 , 0 , 0 , 0 ) . unwrap( ) } ,
26- doc! { "name" : "Arthur Ray" , "age" : 66 , "genre_interests" : vec![ "sci-fi" , "fantasy" , "fiction" ] , "last_active" : Utc . with_ymd_and_hms ( 2019 , 11 , 27 , 0 , 0 , 0 ) . unwrap( ) }
15+ doc! { "name" : "Sonya Mehta" , "age" : 23 , "genre_interests" : vec![ "fiction" , "mystery" , "memoir" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 5 ) . day ( 13 ) . build ( ) . unwrap( ) } ,
16+ doc! { "name" : "Selena Sun" , "age" : 45 , "genre_interests" : vec![ "fiction" , "literary" , "theory" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 5 ) . day ( 25 ) . build ( ) . unwrap( ) } ,
17+ doc! { "name" : "Carter Johnson" , "age" : 56 , "genre_interests" : vec![ "literary" , "self help" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 5 ) . day ( 31 ) . build ( ) . unwrap( ) } ,
18+ doc! { "name" : "Rick Cortes" , "age" : 18 , "genre_interests" : vec![ "sci-fi" , "fantasy" , "memoir" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 7 ) . day ( 1 ) . build ( ) . unwrap( ) } ,
19+ doc! { "name" : "Belinda James" , "age" : 76 , "genre_interests" : vec![ "literary" , "nonfiction" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 6 ) . day ( 11 ) . build ( ) . unwrap( ) } ,
20+ doc! { "name" : "Corey Saltz" , "age" : 29 , "genre_interests" : vec![ "fiction" , "sports" , "memoir" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 1 ) . day ( 23 ) . build ( ) . unwrap( ) } ,
21+ doc! { "name" : "John Soo" , "age" : 16 , "genre_interests" : vec![ "fiction" , "sports" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 1 ) . day ( 3 ) . build ( ) . unwrap( ) } ,
22+ doc! { "name" : "Lisa Ray" , "age" : 39 , "genre_interests" : vec![ "poetry" , "art" , "memoir" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 5 ) . day ( 30 ) . build ( ) . unwrap( ) } ,
23+ doc! { "name" : "Kiran Murray" , "age" : 20 , "genre_interests" : vec![ "mystery" , "fantasy" , "memoir" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 1 ) . day ( 30 ) . build ( ) . unwrap( ) } ,
24+ doc! { "name" : "Beth Carson" , "age" : 31 , "genre_interests" : vec![ "mystery" , "nonfiction" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 8 ) . day ( 4 ) . build ( ) . unwrap( ) } ,
25+ doc! { "name" : "Thalia Dorn" , "age" : 21 , "genre_interests" : vec![ "theory" , "literary" , "fiction" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 8 ) . day ( 19 ) . build ( ) . unwrap( ) } ,
26+ doc! { "name" : "Arthur Ray" , "age" : 66 , "genre_interests" : vec![ "sci-fi" , "fantasy" , "fiction" ] , "last_active" : DateTime :: builder ( ) . year ( 2019 ) . month ( 11 ) . day ( 27 ) . build ( ) . unwrap( ) } ,
2727 ] ;
2828
2929 my_coll. insert_many ( docs, None ) . await ?;
@@ -37,7 +37,7 @@ async fn main() -> mongodb::error::Result<()> {
3737 "avg_age" : doc! { "$avg" : "$age" } ,
3838 "min_age" : doc! { "$min" : "$age" } ,
3939 "max_age" : doc! { "$max" : "$age" }
40- } }
40+ } } ,
4141 ] ;
4242
4343 let mut results = my_coll. aggregate ( age_pipeline, None ) . await ?;
@@ -50,9 +50,9 @@ async fn main() -> mongodb::error::Result<()> {
5050 // begin-lastactive-agg
5151 let last_active_pipeline = vec ! [
5252 doc! { "$project" : { "month_last_active" : doc! { "$month" : "$last_active" } } } ,
53- doc! { "$group" : doc! { "_id" : doc! { "month_last_active" : "$month_last_active" } ,
54- "number" : doc! { "$sum" : 1 } } } ,
55- doc! { "$sort" : { "_id.month_last_active" : 1 } }
53+ doc! { "$group" : doc! { "_id" : doc! { "month_last_active" : "$month_last_active" } ,
54+ "number" : doc! { "$sum" : 1 } } } ,
55+ doc! { "$sort" : { "_id.month_last_active" : 1 } } ,
5656 ] ;
5757
5858 let mut results = my_coll. aggregate ( last_active_pipeline, None ) . await ?;
@@ -67,7 +67,7 @@ async fn main() -> mongodb::error::Result<()> {
6767 doc! { "$unwind" : "$genre_interests" } ,
6868 doc! { "$group" : doc! { "_id" : "$genre_interests" , "number" : doc! { "$sum" : 1 } } } ,
6969 doc! { "$sort" : doc! { "number" : -1 } } ,
70- doc! { "$limit" : 3 }
70+ doc! { "$limit" : 3 } ,
7171 ] ;
7272
7373 let mut results = my_coll. aggregate ( popularity_pipeline, None ) . await ?;
0 commit comments