package Ġorg . el k oser ver . server . context Ċ Ċ import Ġcom . gr ack . nano json . JsonArray Ċ import Ġcom . gr ack . nano json . JsonObject Ċ Ċ /** Ċ Ġ* ĠGenerate Ġand Ġreturn Ġa ĠMongoDB Ġquery Ġto Ġfetch Ġan Ġobject 's Ġnon - embedded , Ċ Ġ* Ġapplication - scoped Ġmods . Ġ ĠThese Ġmods Ġare Ġstored Ġin Ġthe Ġobject Ġdatabase Ġas Ċ Ġ* Ġindependent Ġobjects . Ġ ĠSuch Ġa Ġmod Ġis Ġidentified Ġby Ġa Ġ" ref x " Ġproperty Ġand Ċ Ġ* Ġa Ġ" scope " Ġproperty . Ġ ĠThe Ġ" ref x " Ġproperty Ġcorresponds Ġto Ġthe Ġref Ġof Ġthe Ċ Ġ* Ġobject Ġthe Ġmod Ġshould Ġbe Ġattached Ġto . Ġ ĠThe Ġ" scope " Ġproperty Ġmatches Ġif Ċ Ġ* Ġits Ġvalue Ġis Ġa Ġpath Ġprefix Ġmatch Ġfor Ġthe Ġquery 's Ġscope Ġparameter . Ġ ĠFor Ċ Ġ* Ġexample , Ċ Ġ* Ċ Ġ* Ġscope Query (" foo ", Ġ" com - example - thing ") Ċ Ġ* Ċ Ġ* Ġwould Ġtranslate Ġto Ġthe Ġquery Ġpattern : Ċ Ġ* Ċ Ġ* Ġ{ Ġref x : Ġ" foo ", Ċ Ġ* Ġ$ or : Ġ[ Ċ Ġ* Ġ{ Ġscope : Ġ" com " Ġ}, Ċ Ġ* Ġ{ Ġscope : Ġ" com - example " Ġ}, Ċ Ġ* Ġ{ Ġscope : Ġ" com - example - thing " Ġ} Ċ Ġ* Ġ] Ċ Ġ* Ġ} Ċ Ġ* Ċ Ġ* ĠNote Ġthat Ġin Ġthe Ġfuture Ġwe Ġmay Ġdecide Ġ( based Ġon Ġwhat 's Ġactually Ġthe Ġmost Ċ Ġ* Ġefficient Ġin Ġthe Ġunderlying Ġdatabase ) Ġto Ġreplace Ġthe Ġ"$ or " Ġin Ġthe Ġquery Ċ Ġ* Ġwith Ġa Ġregex Ġproperty Ġmatch Ġor Ġsome Ġother Ġway Ġof Ġfetching Ġbased Ġon Ġa Ċ Ġ* Ġpath Ġprefix , Ġso Ġdon 't Ġtake Ġthe Ġabove Ġexpansion Ġas Ġthe Ġliteral Ġfinal Ċ Ġ* Ġword . Ċ Ġ* Ċ Ġ* Ġ@ param Ġref Ġ ĠThe Ġref Ġof Ġthe Ġobject Ġin Ġquestion . Ċ Ġ* Ġ@ param Ġscope Ġ ĠThe Ġapplication Ġscope Ċ Ġ* Ċ Ġ* Ġ@ return Ġa ĠJSON Ġobject Ġrepresenting Ġthe Ġabove Ġdescribed Ġquery . Ċ Ġ*/ Ċ internal Ġfun Ġscope Query ( ref : ĠString , Ġscope : ĠString ): ĠJsonObject Ġ{ ĊĠĠĠ Ġval Ġor List Ġ= ĠJson Array () ĊĠĠĠ Ġval Ġfr ags Ġ= Ġscope . split ("- "). to Typed Array () ĊĠĠĠ Ġvar Ġscope Part : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġfor Ġ( frag Ġin Ġfr ags ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( scope Part Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Part Ġ= Ġfrag ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Part Ġ+= Ġ"- $ frag " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġor Term Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġor Term [" scope "] Ġ= Ġscope Part ĊĠĠĠĠĠĠĠ Ġor List . add ( or Term ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġquery Ġ= ĠJsonObject () ĊĠĠĠ Ġquery [" ref x "] Ġ= Ġref ĊĠĠĠ Ġquery [" \$ or "] Ġ= Ġor List ĊĠĠĠ Ġreturn Ġquery Ċ } Ċ