package Ġcom . mos h bit . k ater base Ċ Ċ import Ġcom . mongodb . client . model . Acc umul ators Ċ import Ġcom . mongodb . client . model . Ag greg ates Ċ import Ġcom . mongodb . client . model . B son Field Ċ import Ġcom . mongodb . client . model . Projection s Ċ import Ġorg . bson . Document Ċ import Ġorg . bson . conversions . B son Ċ import Ġjava . security . Secure Random Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Parameter Ċ import Ġkotlin . reflect . K Property 1 Ċ import Ġkotlin . reflect . K Type Parameter Ċ Ċ abstract Ġclass ĠMongo Entry Ġ{ ĊĠ Ġfun Ġto B SON Document (): ĠDocument Ġ= ĠJson Handler . to B son Document ( this ) Ċ } Ċ Ċ abstract Ġclass ĠMongo Sub Entry Ġ: ĠMongo Entry () Ċ Ċ abstract Ġclass ĠMongo Aggregation Entry Ġ: ĠMongo Entry () Ċ Ċ abstract Ġclass ĠMongo Main Entry Ġ: ĠMongo Entry () Ġ{ ĊĠ Ġ@ Suppress (" PropertyName ") Ġ// ĠMongoDB s Ġid Ġfield Ġis Ġnamed Ġ"_ id ", Ġso Ġallow Ġit Ġhere Ġtoo . ĊĠ Ġvar Ġ_ id : ĠString Ġ= Ġ"" ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġother Ġ=== Ġthis Ġ|| Ġ( other Ġas ? ĠMongo Main Entry )? ._ id Ġ== Ġthis ._ id ĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġ_ id . hashCode () ĊĊĠ Ġfun Ġrandom Id (): ĠString Ġ= ĠMongo Main Entry . random Id () ĊĠ Ġfun Ġsecure Random Id (): ĠString Ġ= ĠMongo Main Entry . secure Random Id () ĊĊĠ Ġfun Ġgenerate Id ( compound Value : ĠString , Ġvar arg Ġcompound Values : ĠString ): ĠString Ġ= ĠMongo Main Entry . generate Id ( compound Value , Ġ* compound Values ) ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrandom Ġ= ĠRandom () ĊĠĠĠ Ġprivate Ġval Ġsecure Random Ġ= ĠSecure Random () ĊĊĠĠĠ Ġfun Ġrandom Id (): ĠString Ġ{ ĊĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( size Ġ= Ġ 1 6 ) Ġ// Ġ 1 6 Ġ* Ġ 8 Ġ= Ġ 2 5 6 Ġ-> Ġfull Ġentropy Ġfor Ġsha 2 5 6 ĊĠĠĠĠĠ Ġrandom . next Bytes ( bytes ) ĊĠĠĠĠĠ Ġreturn Ġbytes . sha 2 5 6 (). take ( 3 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsecure Random Id (): ĠString Ġ{ ĊĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( size Ġ= Ġ 1 6 ) Ġ// Ġ 1 6 Ġ* Ġ 8 Ġ= Ġ 2 5 6 Ġ-> Ġfull Ġentropy Ġfor Ġsha 2 5 6 ĊĠĠĠĠĠ Ġsecure Random . next Bytes ( bytes ) ĊĠĠĠĠĠ Ġreturn Ġbytes . sha 2 5 6 (). take ( 3 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Id ( compound Value : ĠString , Ġvar arg Ġcompound Values : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcompound Values . join ToString ( separator Ġ= Ġ"| ", Ġprefix Ġ= Ġ"$ compound Value | "). sha 2 5 6 (). take ( 3 2 ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ private Ġfun ĠAny ?. to B SON Document (): ĠAny ? Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠ Ġnull Ġ-> Ġthis ĊĠ Ġis ĠString , Ġis ĠInt , Ġis ĠLong , Ġis ĠDouble , Ġis ĠFloat , Ġis ĠDate , Ġis ĠBoolean , Ġis ĠByteArray Ġ-> Ġthis ĊĠ Ġis ĠEnum < *> Ġ-> Ġthis . name ĊĠ Ġis ĠCollection < *> Ġ-> Ġthis . map Ġ{ Ġit . to B SON Document () Ġ} ĊĠ Ġis ĠDocument Ġ-> Ġthis . map Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġ( key Ġas ĠString ) Ġto Ġvalue . to B SON Document () Ġ}. toMap ( Document ()) ĊĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġthis . map Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġ( key . to B SON Document () Ġas ĠString ) Ġto Ġvalue . to B SON Document () Ġ}. toMap ( Document ()) ĊĠ Ġis ĠMongo Entry Ġ-> Ġthis . to B SON Document () ĊĠ Ġis ĠSub Document List Filter Ġ-> ĠDocument ("\ $ elem Match ", Ġfilter . to Filter Document ()) ĊĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ("${ this . java Class . simple Name } Ġis Ġnot ĠBSON Ġcompatible , Ġif Ġyou Ġwant Ġto Ġput Ġthis Ġclass Ġin ĠMongo Ġit Ġshould Ġbe Ġa ĠMongo Entry !") Ċ } Ċ Ċ fun ĠArray < out ĠMongo Pair >. to Filter Document (): ĠDocument Ġ{ ĊĠ Ġval Ġbson Ġ= ĠDocument () ĊĠ Ġ// ĠIterate Ġthrough Ġevery ĠMongo Pair Ġand Ġadd Ġtheir Ġvalues ĊĠ Ġthis . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠ Ġis ĠDocument Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġvalue Ġis Ġa ĠDocument , Ġmerge Ġit 's Ġkeys Ġand Ġvalues Ġwith Ġanother ĠDocument Ġfrom Ġthe Ġsame Ġkey Ġto Ġsupport Ġmultiple Ġoperators ĊĠĠĠĠĠĠĠ Ġval Ġinner B son Ġ= Ġbson . get Or Put ( key . name ) Ġ{ ĠDocument () Ġ} Ġas ? ĠDocument ĊĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException ("${ key . name } Ġcan 't Ġhave Ġ' equal ' Ġor Ġ' has ' Ġoperators Ġif Ġit Ġhas Ġmultiple Ġoperators ") ĊĠĠĠĠĠĠĠ Ġvalue . forEach Ġ{ Ġinner Key , Ġinner Value Ġ-> Ġinner B son [ inner Key ] Ġ= Ġinner Value Ġ} ĊĠĠĠĠĠĠĠ Ġbson [ key . name ] Ġ= Ġinner B son Ġ// ĠAdd Ġmerged ĠDocument Ġto Ġouter ĠDocument ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġbson [ key . name ] Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn Ġbson Ċ } Ċ Ċ class ĠSub Document List Filter ( var arg Ġval Ġfilter : ĠFilter Pair ) Ċ Ċ type alias ĠMongo Entry Field < T > Ġ= ĠK Property 1 < out ĠMongo Entry , ĠT > Ċ type alias ĠNullable Mongo Entry Field < T > Ġ= ĠK Property 1 < out ĠMongo Entry , ĠT ?> Ċ Ċ fun Ġ< Value > ĠMongo Entry Field < Value >. to Mongo Field () Ġ= ĠMongo Field ( name ) Ċ Ċ /** Ċ Ġ* ĠUse Ġthis Ġif Ġyou Ġwant Ġto Ġaccess Ġa Ġsub document 's Ġfield Ċ Ġ*/ Ċ fun Ġ< Value > ĠMongo Entry Field < out ĠAny >. child ( property : ĠMongo Entry Field < Value >): ĠMongo Entry Field < Value > Ġ{ ĊĠ Ġreturn Ġthis . to Mongo Field (). extend ( property . name ). to Property () Ċ } Ċ Ċ @ Jvm Name (" child On Nullable ") Ċ fun Ġ< Value > ĠNullable Mongo Entry Field < out ĠAny >. child ( property : ĠMongo Entry Field < Value >): ĠMongo Entry Field < Value > Ġ{ ĊĠ Ġreturn Ġthis . to Mongo Field (). extend ( property . name ). to Property () Ċ } Ċ Ċ /** Ċ Ġ* ĠUse Ġthis Ġif Ġyou Ġwant Ġto Ġaccess Ġa Ġmap 's Ġvalue Ġusing Ġthe Ġkey . Ċ Ġ*/ Ċ fun Ġ< Value > ĠMongo Entry Field < Map < String , ĠValue >> . child ( key : ĠString ): ĠMongo Entry Field < Value > Ġ{ ĊĠ Ġreturn Ġthis . to Mongo Field (). extend ( key ). to Property () Ċ } Ċ Ċ /** Ċ Ġ* ĠUse Ġthis Ġif Ġyou Ġhave Ġan Ġarray Ġof Ġclasses . ĠThis Ġfilter Ġreturns Ġevery Ġdocument Ġwhere Ġin Ġthe Ġarray Ċ Ġ* Ġevery Ġfilter Ġmatches Ġat Ġleast Ġone Ġsub document Ċ Ġ*/ Ċ fun ĠMongo Entry Field < out ĠList < Mongo Sub Entry >> . any ( var arg Ġfilter : ĠFilter Pair ): ĠFilter Pair Ġ{ ĊĠ Ġreturn ĠFilter Pair ( this , ĠSub Document List Filter (* filter )) Ċ } Ċ Ċ /** Ċ Ġ* ĠUse Ġthis Ġif Ġyou Ġhave Ġan Ġarray Ġof Ġclasses . ĠThis Ġfilter Ġreturns Ġevery Ġdocument Ġwhere Ġin Ġthe Ġarray Ċ Ġ* Ġnone Ġof Ġthe Ġfilter Ġmatches Ġany Ġsub documents Ċ Ġ*/ Ċ fun ĠMongo Entry Field < out ĠList < Mongo Sub Entry >> . none ( var arg Ġfilter : ĠFilter Pair ): ĠFilter Pair Ġ{ ĊĠ Ġreturn ĠFilter Pair ( this , ĠDocument ("\ $ not ", ĠSub Document List Filter (* filter ). to B SON Document ())) Ċ } Ċ Ċ // ĠRepresents Ġa Ġfake ĠKotlin Ġclass Ġproperty Ċ private Ġclass ĠFake Property < T , ĠR >( override Ġval Ġname : ĠString ) Ġ: ĠK Property 1 < T , ĠR > Ġ{ ĊĠ Ġprivate Ġfun Ġerror (): ĠNothing Ġ= Ġthrow ĠException (" Operation Ġnot Ġsupported ") ĊĊĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠT ): ĠR Ġ= Ġerror () ĊĊĠ Ġoverride Ġfun Ġcall By ( args : ĠMap < K Parameter , ĠAny ?> ): ĠR Ġ= Ġerror () ĊĠ Ġoverride Ġval Ġis Late init Ġget () Ġ= Ġfalse ĊĠ Ġoverride Ġval Ġis Abstract Ġget () Ġ= Ġfalse ĊĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġfalse ĊĠ Ġoverride Ġval ĠisOpen Ġget () Ġ= Ġfalse ĊĠ Ġoverride Ġval Ġparameters : ĠList < K Parameter > Ġget () Ġ= Ġempty List () ĊĠ Ġoverride Ġval ĠreturnType Ġget () Ġ= Ġerror () ĊĠ Ġoverride Ġval Ġtype Parameters : ĠList < K Type Parameter > Ġget () Ġ= Ġempty List () ĊĠ Ġoverride Ġval Ġis Suspend : ĠBoolean Ġ= Ġfalse ĊĊĠ Ġoverride Ġval Ġvisibility Ġget () Ġ= Ġerror () ĊĊĠ Ġoverride Ġfun Ġcall ( var arg Ġargs : ĠAny ?) Ġ= Ġerror () ĊĠ Ġoverride Ġval Ġis Const Ġget () Ġ= Ġfalse ĊĊĠ Ġoverride Ġfun Ġget Delegate ( receiver : ĠT ): ĠAny Ġ= Ġerror () ĊĠ Ġoverride Ġval Ġannotations : ĠList < Annotation > Ġget () Ġ= Ġempty List () ĊĊĠ Ġoverride Ġval Ġgetter Ġget () Ġ= Ġerror () ĊĠ Ġoverride Ġfun Ġget ( receiver : ĠT ): ĠR Ġ= Ġerror () Ċ } Ċ Ċ class ĠMongo Field ( val Ġname : ĠString ) Ġ{ ĊĠ Ġfun Ġextend ( name : ĠString ) Ġ= ĠMongo Field ( this . name Ġ+ Ġ'.' Ġ+ Ġname ) ĊĠ Ġfun Ġextend With Cursor ( name : ĠString ) Ġ= ĠMongo Field ( this . name Ġ+ Ġ".$ ." Ġ+ Ġname ) ĊĊĠ Ġfun Ġ< Class , ĠType > Ġto Property (): ĠK Property 1 < Class , ĠType > Ġ= ĠFake Property ( name ) ĊĠ Ġval ĠfieldName : ĠString Ġget () Ġ= Ġname . take Last While Ġ{ Ġit Ġ!= Ġ'.' Ġ} ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġ( other Ġas ? ĠMongo Field )?. name Ġ== Ġname ĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġname . hashCode () Ċ } Ċ Ċ abstract Ġclass ĠMongo Pair ( val Ġkey : ĠMongo Field , Ġval Ġvalue : ĠAny ?) Ġ{ ĊĠ Ġoperator Ġfun Ġcomponent 1 () Ġ= Ġkey ĊĠ Ġoperator Ġfun Ġcomponent 2 () Ġ= Ġvalue Ċ } Ċ Ċ class ĠFilter Pair Ċ @ Deprecated (" Use Ġonly Ġfor Ġhack s ") Ġconstructor ( key : ĠMongo Field , Ġvalue : ĠAny ?) Ġ: ĠMongo Pair ( key , Ġvalue . to B SON Document ()) Ġ{ ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < out ĠAny ? >, Ġvalue : ĠAny ?) Ġ: Ġthis ( key . to Mongo Field (), Ġvalue ) Ċ } Ċ Ċ class ĠMut ator Pair < out ĠValue > Ċ @ Deprecated (" Use Ġonly Ġfor Ġhack s ") Ġconstructor ( key : ĠMongo Field , Ġvalue : ĠAny ?) Ġ: ĠMongo Pair ( key , Ġvalue . to B SON Document ()) Ġ{ ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < out ĠValue >, Ġvalue : ĠValue ?) Ġ: Ġthis ( key . to Mongo Field (), Ġvalue ) ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < out ĠValue >, Ġvalue : ĠDocument ) Ġ: Ġthis ( key . to Mongo Field (), Ġvalue ) ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < out ĠValue >, Ġvalue : ĠList < Document >) Ġ: Ġthis ( key . to Mongo Field (), Ġvalue ) ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < Map < String , ĠValue >>, Ġvalue : ĠPair < String , ĠValue >) Ġ: ĊĠĠĠĠĠ Ġthis ( key . to Mongo Field (). extend ( value . first ), Ġvalue . second ) Ċ } Ċ Ċ class ĠPush Pair < Value > Ċ @ Deprecated (" Use Ġonly Ġfor Ġhack s ") Ġconstructor ( key : ĠMongo Field , Ġvalue : ĠAny ?) Ġ: ĠMongo Pair ( key , Ġvalue . to B SON Document ()) Ġ{ ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < List < Value >>, Ġvalue : ĠValue ?) Ġ: Ġthis ( key . to Mongo Field (), Ġvalue ) ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < List < Value >>, Ġvalue : ĠDocument ) Ġ: Ġthis ( key . to Mongo Field (), Ġvalue ) Ċ } Ċ Ċ // ĠSee : Ġhttps :// docs . mongodb . com / manual / reference / operator / update / unset / Ċ @ Deprecated (" Use Ġonly Ġfor Ġhack s ") Ċ class ĠUn set Pair ( key : ĠMongo Field ) Ġ: ĠMongo Pair ( key , Ġvalue Ġ= Ġ"") Ġ{ ĊĊĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠ Ġconstructor ( key : ĠMongo Entry Field < out ĠAny ?> ) Ġ: Ġthis ( key . to Mongo Field ()) Ċ } Ċ Ċ // ĠFilter Pair Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. equal ( value : ĠValue ?) Ġ= ĠFilter Pair ( this , Ġvalue ) Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. not Equal ( value : ĠValue ?) Ġ= ĠFilter Pair ( this , ĠDocument ("\ $ ne ", Ġvalue )) Ċ Ċ // ĠTHIS ĠCALL ĠCAN ĠNOT ĠBE ĠINDEX ED !!! Ċ infix Ġfun ĠMongo Entry Field < String >. contains ( value : ĠString ) Ġ= Ġcontains ( value , Ġcase Sensitive Ġ= Ġtrue ) Ċ Ċ infix Ġfun ĠMongo Entry Field < String >. contains Case Ins ensitive ( value : ĠString ) Ġ= Ġcontains ( value , Ġcase Sensitive Ġ= Ġfalse ) Ċ fun ĠMongo Entry Field < String >. contains ( value : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġtrue ) Ġ= ĠFilter Pair ( this , ĠDocument (). apply Ġ{ ĊĠ Ġappend ("\ $ regex ", Ġ" .* " Ġ+ ĠPattern . quote ( value ) Ġ+ Ġ" .* ") Ġ// ĠUse ĠPattern . quote (..) Ġto Ġescape Ġall Ġregex Ġreserved Ġchars ĊĠ Ġif Ġ(! case Sensitive ) Ġappend ("\ $ options ", Ġ" i ") Ġ// ĠCase - ins ensitive Ċ }) Ċ Ċ infix Ġfun ĠMongo Entry Field < String >. matches ( regex : ĠString ) Ġ= Ġmatches ( regex , Ġcase Sensitive Ġ= Ġtrue ) Ċ infix Ġfun ĠMongo Entry Field < String >. matches Case Ins ensitive ( regex : ĠString ) Ġ= Ġmatches ( regex , Ġcase Sensitive Ġ= Ġfalse ) Ċ Ċ fun ĠMongo Entry Field < String >. matches ( regex : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġtrue ) Ġ= ĠFilter Pair ( this , ĠDocument (). apply Ġ{ ĊĠ Ġappend ("\ $ regex ", Ġregex ) ĊĠ Ġif Ġ(! case Sensitive ) Ġappend ("\ $ options ", Ġ" i ") Ċ }) Ċ Ċ // ĠTHIS ĠCALL ĠCAN ĠNOT ĠBE ĠINDEX ED !!! Ċ infix Ġfun ĠMongo Entry Field < String >. startsWith ( value : ĠString ) Ġ= Ġstart sWith ( value , Ġcase Sensitive Ġ= Ġtrue ) Ċ Ċ infix Ġfun ĠMongo Entry Field < String >. startsWith Case Ins ensitive ( value : ĠString ) Ġ= Ġstart sWith ( value , Ġcase Sensitive Ġ= Ġfalse ) Ċ Ċ fun ĠMongo Entry Field < String >. startsWith ( value : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġtrue ) Ġ= ĠFilter Pair ( this , ĠDocument (). apply Ġ{ ĊĠ Ġappend ("\ $ regex ", Ġ"^ " Ġ+ ĠPattern . quote ( value ) Ġ+ Ġ" .* ") Ġ// ĠUse ĠPattern . quote (..) Ġto Ġescape Ġall Ġregex Ġreserved Ġchars ĊĠ Ġif Ġ(! case Sensitive ) Ġappend ("\ $ options ", Ġ" i ") Ġ// ĠCase - ins ensitive Ċ }) Ċ Ċ // ĠTHIS ĠCALL ĠCAN ĠNOT ĠBE ĠINDEX ED !!! Ċ infix Ġfun ĠMongo Entry Field < String >. endsWith ( value : ĠString ) Ġ= Ġend sWith ( value , Ġcase Sensitive Ġ= Ġtrue ) Ċ Ċ fun ĠMongo Entry Field < String >. endsWith ( value : ĠString , Ġcase Sensitive : ĠBoolean Ġ= Ġtrue ) Ġ= ĠFilter Pair ( this , ĠDocument (). apply Ġ{ ĊĠ Ġappend ("\ $ regex ", Ġ" .* " Ġ+ ĠPattern . quote ( value ) Ġ+ Ġ"\ $ ") Ġ// ĠUse ĠPattern . quote (..) Ġto Ġescape Ġall Ġregex Ġreserved Ġchars ĊĠ Ġif Ġ(! case Sensitive ) Ġappend ("\ $ options ", Ġ" i ") Ġ// ĠCase - ins ensitive Ċ }) Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < out ĠCollection < Value >> . has ( value : ĠValue ) Ġ= ĠFilter Pair ( this , Ġvalue ) Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. in Array ( array : ĠCollection < Value >): ĠFilter Pair Ġ{ ĊĠ Ġreturn ĠFilter Pair ( this , ĠDocument ("\ $ in ", Ġarray )) Ċ } Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. not In Array ( array : ĠCollection < Value >): ĠFilter Pair Ġ{ ĊĠ Ġreturn ĠFilter Pair ( this , ĠDocument ("\ $ nin ", Ġarray )) Ċ } Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < out ĠCollection < Value >> . has Any In Array ( array : ĠCollection < Value >) Ġ= ĊĠ ĠFilter Pair ( this , ĠDocument ("\ $ in ", Ġarray )) Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < out ĠCollection < Value >> . has None In Array ( array : ĠCollection < Value >) Ġ= ĊĠ ĠFilter Pair ( this , ĠDocument ("\ $ nin ", Ġarray )) Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. lower ( value : ĠValue ) Ġ= ĠFilter Pair ( this , ĠDocument ("\ $ lt ", Ġvalue )) Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. lower Equals ( value : ĠValue ) Ġ= ĠFilter Pair ( this , ĠDocument ("\ $ lte ", Ġvalue )) Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. greater ( value : ĠValue ) Ġ= ĠFilter Pair ( this , ĠDocument ("\ $ gt ", Ġvalue )) Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. greater Equals ( value : ĠValue ) Ġ= ĠFilter Pair ( this , ĠDocument ("\ $ gte ", Ġvalue )) Ċ Ċ fun Ġ< Value > ĠMongo Entry Field < Value >. in Range ( start : ĠValue , Ġend : ĠValue , Ġinclude Start : ĠBoolean Ġ= Ġtrue , Ġinclude End : ĠBoolean Ġ= Ġfalse ) Ġ= ĊĠ ĠFilter Pair ( this , ĠDocument (). apply Ġ{ ĊĠĠĠ Ġif Ġ( include Start ) Ġput All ( Document ("\ $ gte ", Ġstart )) Ġelse Ġput All ( Document ("\ $ gt ", Ġstart )) ĊĠĠĠ Ġif Ġ( include End ) Ġput All ( Document ("\ $ lte ", Ġend )) Ġelse Ġput All ( Document ("\ $ lt ", Ġend )) ĊĠ Ġ}) Ċ Ċ // ĠKeep Ġin Ġmind Ġthat Ġthis Ġquery Ġcan 't Ġbe Ġindexed Ġ( unless Ġusing Ġprobably Ġa Ġspace Ġindex ) Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. exists ( value : ĠBoolean ) Ġ= ĠFilter Pair ( this , ĠDocument ("\ $ exists ", Ġvalue )) Ċ Ċ // ĠMut ator Pair Ċ Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < Value >. value Document ( value : ĠDocument ) Ġ= ĠMut ator Pair ( this , Ġvalue ) Ċ Ċ // ĠPush Pair Ċ infix Ġfun Ġ< Value > ĠMongo Entry Field < List < Value >> . value Document ( value : ĠDocument ) Ġ= ĠPush Pair ( this , Ġvalue ) Ċ Ċ // ĠGlobal Ġoperators Ċ // ĠThese Ġshould Ġlook Ġlike Ġthis : Ġfind ({ $ or : [{ _ id : Ġ" 1 "}, Ġ{_ id : Ġ" 2 "} ]}) Ċ // ĠThey Ġcan Ġbe Ġcombined Ġlike Ġthis : Ġfind ({ $ or : [{ _ id : Ġ" 1 "}, Ġ{$ and : [{ name : Ġ" test "}, Ġ{_ id : Ġ" 2 "}]} ]}) Ċ // ĠBind Ġthese Ġto ĠMongo Database Ġso Ġthey Ġare Ġ" not Ġso Ġglobal " Ċ Ċ // ĠLogical Ġoperators Ċ @ Suppress (" DE PREC ATION ", Ġ" unused ") Ċ fun ĠMongo Database . or ( var arg Ġfilter : ĠFilter Pair ) Ġ= ĠFilter Pair ( Mongo Field ("\ $ or "), Ġfilter . map Ġ{ ĠarrayOf ( it ). to Filter Document () Ġ}) Ċ Ċ @ Suppress (" DE PREC ATION ", Ġ" unused ") Ċ fun ĠMongo Database . and ( var arg Ġfilter : ĠFilter Pair ) Ġ= ĠFilter Pair ( Mongo Field ("\ $ and "), Ġfilter . map Ġ{ ĠarrayOf ( it ). to Filter Document () Ġ}) Ċ Ċ // ĠThis Ġcall Ġrequires Ġa ĠText ĠIndex Ġhttps :// docs . mongodb . com / manual / text - search /# text - operator Ċ // ĠAll Ġfields Ġthat Ġare Ġdefined Ġas ĠText ĠIndex Ġin Ġthis Ġcollection Ġare Ġsearched . Ċ @ Suppress (" DE PREC ATION ") Ċ infix Ġfun ĠMongo Database . search Text ( value : ĠString ) Ġ= ĠFilter Pair ( Mongo Field ("\ $ text "), ĠDocument ("\ $ search ", Ġvalue )) Ċ Ċ // ĠAg gregation Ċ fun Ġaggregation Pipeline ( block : ĠAg gregation Pipeline . () Ġ-> ĠUnit ): ĠAg gregation Pipeline Ġ= ĠAg gregation Pipeline (). apply Ġ{ Ġblock () Ġ} Ċ Ċ class ĠAg gregation Pipeline Ġ{ ĊĠ Ġval Ġbson : ĠMutable List < B son > Ġ= Ġmutable ListOf () ĊĊĠ Ġfun Ġsample ( size : ĠInt ) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . sample ( size ) ĊĠ Ġ} ĊĊĠ Ġfun Ġmatch ( var arg Ġfilter : ĠFilter Pair ) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . match ( filter . to Filter Document ()) ĊĠ Ġ} ĊĊĠ Ġfun Ġgroup ( field : ĠMongo Entry Field <* >, Ġblock : ĠAcc um ulation . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġacc umul ators Ġ= ĠAcc um ulation (). apply Ġ{ Ġblock () Ġ}. acc umul ators ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . group ("\ $ ${ field . name }", Ġacc umul ators . map Ġ{ Ġit . bson Field Ġ}) ĊĠ Ġ} ĊĊĠ Ġ// ĠUse Ġthis Ġwhen Ġyou Ġwant Ġto Ġsimply Ġjust Ġinclude Ġsome Ġof Ġthe Ġfields ĊĠ Ġfun Ġproject ( var arg Ġselected Fields : ĠMongo Entry Field <* >) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . project ( selected Fields . include B son ()) ĊĠ Ġ} ĊĊĠ Ġ// ĠUse Ġthis Ġwhen Ġyou Ġwant Ġto Ġtransform Ġthe Ġdocument ĊĠ Ġinline Ġfun Ġ< re ified ĠInput Type Ġ: ĠMongo Entry , Ġre ified ĠOutput Type Ġ: ĠMongo Aggregation Entry > Ġtransform ( no inline Ġblock : ĠTransformation < InputType , ĠOutput Type >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġtransform ( ĊĠĠĠĠĠ Ġtransformation Ġ= ĠTransformation ( InputType :: class , ĠOutput Type :: class ), ĊĠĠĠĠĠ Ġblock Ġ= Ġblock ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ< InputType Ġ: ĠMongo Entry , ĠOutput Type Ġ: ĠMongo Aggregation Entry > Ġtransform ( ĊĠĠĠ Ġtransformation : ĠTransformation < InputType , ĠOutput Type >, ĊĠĠĠ Ġblock : ĠTransformation < InputType , ĠOutput Type >. () Ġ-> ĠUnit ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . project ( transformation . apply Ġ{ Ġblock () Ġ}. bson ) ĊĠ Ġ} ĊĊĠ Ġfun ĠsortBy ( field : ĠMongo Entry Field <* >) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . sort ( Document ( field . name , Ġ 1 )) ĊĠ Ġ} ĊĊĠ Ġfun ĠsortBy Descending ( field : ĠMongo Entry Field <* >) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . sort ( Document ( field . name , Ġ- 1 )) ĊĠ Ġ} ĊĊĠ Ġfun Ġlimit ( limit : ĠInt ) Ġ{ ĊĠĠĠ Ġbson Ġ+= ĠAg greg ates . limit ( limit ) ĊĠ Ġ} ĊĊĠ Ġclass ĠAcc um ulation Ġ{ ĊĠĠĠ Ġval Ġacc umul ators : ĠMutable List < Accumulator > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġclass ĠAcc umulator ( val Ġbson Field : ĠB son Field ) ĊĊĠĠĠ Ġfun Ġsum ( field : ĠMongo Entry Field < out ĠNumber >, Ġvalue : ĠMongo Entry Field < out ĠNumber >) Ġ{ ĊĠĠĠĠĠ Ġacc umul ators Ġ+= ĠAcc umulator ( bson Field Ġ= ĠAcc umul ators . sum ( field . name , Ġ"\ $ ${ value . name } ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaverage ( field : ĠMongo Entry Field < out ĠNumber >, Ġvalue : ĠMongo Entry Field < out ĠNumber >) Ġ{ ĊĠĠĠĠĠ Ġacc umul ators Ġ+= ĠAcc umulator ( bson Field Ġ= ĠAcc umul ators . avg ( field . name , Ġ"\ $ ${ value . name } ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmax ( field : ĠMongo Entry Field < out ĠNumber >, Ġvalue : ĠMongo Entry Field < out ĠNumber >) Ġ{ ĊĠĠĠĠĠ Ġacc umul ators Ġ+= ĠAcc umulator ( bson Field Ġ= ĠAcc umul ators . max ( field . name , Ġ"\ $ ${ value . name } ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin ( field : ĠMongo Entry Field < out ĠNumber >, Ġvalue : ĠMongo Entry Field < out ĠNumber >) Ġ{ ĊĠĠĠĠĠ Ġacc umul ators Ġ+= ĠAcc umulator ( bson Field Ġ= ĠAcc umul ators . min ( field . name , Ġ"\ $ ${ value . name } ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcount ( field : ĠMongo Entry Field < out ĠNumber >) Ġ{ ĊĠĠĠĠĠ Ġacc umul ators Ġ+= ĠAcc umulator ( bson Field Ġ= ĠAcc umul ators . sum ( field . name , Ġ 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġonly Ġfor Ġhack s ") ĊĠĠĠ Ġfun Ġadd Accumulator ( bson Field : ĠB son Field ) Ġ{ ĊĠĠĠĠĠ Ġacc umul ators Ġ+= ĠAcc umulator ( bson Field ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠTransformation < InputType Ġ: ĠMongo Entry , ĠOutput Type Ġ: ĠMongo Aggregation Entry >( ĊĠĠĠ Ġval Ġinput Class : ĠK Class < InputType >, ĊĠĠĠ Ġval Ġoutput Class : ĠK Class < OutputType > ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġprojection s : ĠMutable List < B son > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġval Ġbson : ĠB son Ġget () Ġ= ĠProjection s . fields ( projection s ) ĊĊĠĠĠ Ġfun Ġinclude ( field : ĠK Property 1 < InputType , Ġ* >) Ġ{ ĊĠĠĠĠĠ Ġprojection s Ġ+= ĠProjection s . include ( field . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġcan 't Ġuse ĠInput Type Ġfor Ġinput Field Ġhere Ġbecause Ġinput F ied Ġcan Ġalso Ġbe Ġa Ġchild Ġdocument Ġtype Ġof Ġa ĠMongo Main Entry , ĊĠĠĠ Ġ// Ġjust Ġensure Ġthe Ġfield Ġvalues Ġhave Ġthe Ġsame Ġtype ĊĠĠĠ Ġfun Ġ< Field ValueType > Ġproject ( input Field : ĠMongo Entry Field < Field ValueType >, Ġoutput Field : ĠK Property 1 < OutputType , ĠField ValueType >) Ġ{ ĊĠĠĠĠĠ Ġprojection s Ġ+= ĠProjection s . computed ( output Field . name , Ġ"\ $ ${ input Field . name }") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ // ĠSize Ġis Ġalways Ġin Ġbytes Ċ // ĠMore Ġinfo : Ġhttps :// docs . mongodb . com / manual / reference / command / db Stats /# output Ċ class ĠDatabase Stats ( ĊĠ Ġval Ġdb : ĠString , ĊĠ Ġval Ġcollections : ĠInt , ĊĠ Ġval Ġviews : ĠInt , ĊĠ Ġval Ġobjects : ĠInt , ĊĠ Ġval Ġavg Obj Size : ĠDouble , ĊĠ Ġval Ġdata Size : ĠDouble , ĊĠ Ġval Ġstorage Size : ĠDouble , ĊĠ Ġval Ġindexes : ĠInt , ĊĠ Ġval Ġindex Size : ĠDouble , ĊĠ Ġval Ġfs Used Size : ĠDouble , Ċ ) Ċ Ċ class ĠQuery Stats ( ĊĠ Ġval Ġwin ning Plan : ĠList < String >, ĊĠ Ġval Ġexecution Stats Raw : ĠDocument , Ċ ) Ġ{ ĊĠ Ġval Ġexecution Pipeline String Ġget () Ġ= Ġwin ning Plan . join ToString ( separator Ġ= Ġ" Ġ< Ġ") ĊĠ Ġval Ġexecution Success Ġget () Ġ= Ġexecution Stats Raw [" execution Success "] Ġas ĠBoolean ĊĠ Ġval Ġreturned Documents Ġget () Ġ= Ġexecution Stats Raw [" n Returned "] Ġas ĠInt ĊĠ Ġval Ġexecution Time Millis Ġget () Ġ= Ġexecution Stats Raw [" execution Time Millis "] Ġas ĠInt Ċ } Ċ