Hledání podle argumentů dotazu atributu pole propojení

Automaticky přeloženo z Deepl

Objektová pole, zavedená ve verzi 4D v15, umožňují ukládat a indexovat nestrukturovaná data. Může se jednat o běžnou sadu údajů, jako je jméno, příjmení, narozeniny. Mohou to být různé údaje v každém záznamu, například obchod, který bude potřebovat různé atributy pro boty (velikost, barva), počítače (procesor, paměť), tiskárny (barva, inkoust), seznam hodnot nebo vše v libovolné kombinaci.

Zde je skutečný User Story od zákazníka 4D :

Moje aplikace na odznaky spravuje přístupová práva pro každou osobu do budovy a pro časový úsek. Tyto informace jsou uloženy v databázi jako pole objektů ( např.: {přístupové právo, budova, časový slot} ). Chci mít možnost vyhledat osoby, které mají přístup do budovy během časového intervalu.“

4D poskytuje několik způsobů, jak se dotazovat na data, pomocí indexu, a tak extrémně rychle.

4D v16 R2 dále rozšíří sadu funkcí tím, že umožní ještě složitější dotazy uvnitř seznamu prvků v jednom objektu. Při vyhledávání v atributech pole s více argumenty dotazu spojenými operátorem AND můžete zvolit, zda chcete získat záznamy, kde:

  • shodné argumenty jsou alespoň v jednom prvku
  • shodné argumenty jsou ve stejném prvku ( nově)

Příklad:

Uveďme si příklad s následujícími dvěma záznamy:

{
    "name":"martin",
    "locations": [ 
        { "kind":"home", "city":"paris" } ]
 } , {
    "name":"smith",
    "locations": [
        { "kind":"home", "city":"lyon" },
        { "kind":"office", "city":"paris" } ]
 }

Chcete najít lidi s druhem umístění „home“ ve městě „paris„.

Shodné argumenty jsou alespoň v jednom elementu

Pokud napíšete:

QUERY BY ATTRIBUTE([People];[People]OB_Field; "locations[].kind";=; "home";*)
QUERY BY ATTRIBUTE([People]; & ;[People]OB_Field; "locations[].city";=; "paris")

Dotaz vrátí martin a smith, protože smith má element „locations“, jehož kind je„home “ a jehož city“ je paris„, i když to není stejný element.

Shodné argumenty jsou ve stejném elementu

Pokud napíšete:

QUERY BY ATTRIBUTE([People];[People]OB_Field; "locations[a].kind";=; "home";*)
QUERY BY ATTRIBUTE([People]; & ;[People]OB_Field; "locations[a].city";=; "paris")

Dotaz vrátí martin„, protože má element locations, jehožkind jehome a jehož city “ je paris„. Dotaz nevrátí smith, protože hodnoty home a paris nejsou ve stejném prvku pole.

Pokud chcete získat pouze záznamy, u nichž se shodné argumenty nacházejí ve stejném prvku, musíte použít propojené argumenty. Chcete-li propojit argumenty dotazu, přidejte mezi [ ] v první propojované cestě písmeno a stejné písmeno opakujte ve všech propojovaných argumentech.

Například: locations[a].city a locations[a].kind. Chcete-li do téhož dotazu přidat různá propojená kritéria, použijte jiné písmeno. Další příklady si můžete stáhnout z následující ukázkové databáze.

Příklad databáze

Další podrobnosti naleznete také v dokumentaci 4D v16 R2:

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.