Share via


Az Azure Digital Twins lekérdezési nyelvének referenciája: MATCH záradék

Ez a dokumentum hivatkozási információkat tartalmaz az Azure Digital Twins lekérdezési nyelv MATCH záradékáról.

A MATCH záradékot az Azure Digital Twins lekérdezési nyelve használja a FROM záradék részeként. MATCH Segítségével megadhatja, hogy melyik mintát kell követnie az Azure Digital Twins-gráf kapcsolatainak bejárása közben (ezt "változó ugrás" lekérdezési mintaként is ismerték).

Ez a záradék nem kötelező a lekérdezés során.

Alapvető szintaxis: HOL.VAN

MATCH támogatja azokat a lekérdezéseket, amelyek bizonyos kapcsolati feltételek alapján megkeresik az ikerpéldányok közötti útvonalat egy ugrástartományon belül.

A kapcsolati feltétel az alábbi részletek közül egy vagy több részletet tartalmazhat:

A záradékkal rendelkező MATCH lekérdezéseknek a WHERE záradékkal is meg kell adniuk a $dtId hivatkozott ikerpéldányok legalább egyikét.

Feljegyzés

MATCH A lekérdezéstárban végrehajtható összes JOIN lekérdezés egy szuperhalmaza.

Syntax

Íme az alapszintaxis MATCH .

A következő helyőrzőket tartalmazza:

--SELECT ... FROM ...  
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)
WHERE twin_or_twin_collection.$dtId = 'twin_ID' 
-- AND ...

Az ikergyűjtemények egyikét üresen hagyhatja, hogy bármelyik ikerpéldány ezen a helyen dolgozhasson.

A kapcsolati feltételek számát úgy is módosíthatja, hogy több láncolt kapcsolati feltétel legyen, vagy egyáltalán ne legyen kapcsolati feltétel:

--Chained relationship conditions
-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)-[relationship_condition]-(twin_or_twin_collection_3)...
WHERE twin_or_twin_collection.$dtId = 'twin_ID'
-- No relationship condition
-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)
WHERE twin_or_twin_collection.$dtId = 'twin_ID'

Az egyes kapcsolati feltételekkel és azok kombinálásával kapcsolatos további részletekért tekintse meg a dokumentum többi szakaszát.

Példa

Íme egy példa lekérdezés a használatával MATCH.

A lekérdezés megadja a kapcsolat irányát, és megkeresi az ikerépületeket és az érzékelőket, ahol...

  • az érzékelőt az épület ikerpéldányának és egy $dtId Building21-nek a kapcsolata célozza, és
  • az érzékelő hőmérséklete 50 felett van. Az épület és az érzékelő is szerepel a lekérdezés eredményében.
SELECT Building, Sensor FROM DIGITALTWINS 
MATCH (Building)-[]->(Sensor) 
WHERE Building.$dtId = 'Building21' AND Sensor.temperature > 50

Kapcsolat irányának megadása

Az ikrek közötti kapcsolat irányának megadásához használja a MATCH záradékban szereplő kapcsolati feltételt. Lehetséges irányok: balról jobbra, jobbról balra vagy nem irányirány. A rendszer automatikusan észleli a ciklikus kapcsolatokat, így a kapcsolatok csak egyszer lépnek be.

Feljegyzés

A láncolással kétirányú kapcsolatokat jelölhet.

Szintaxis

Feljegyzés

Az ebben a szakaszban szereplő példák a kapcsolat irányára összpontosítanak. Nem adnak meg kapcsolatneveket, alapértelmezés szerint egyetlen ugráshoz, és nem rendelnek lekérdezési változókat a kapcsolatokhoz. Az egyéb feltételekkel kapcsolatos további műveletekről a kapcsolat nevének megadása, az ugrások számának megadása és a lekérdezési változó hozzárendelése a kapcsolathoz című témakörben olvashat bővebben. További információ arról, hogy ezek közül több hogyan használható együtt ugyanabban a lekérdezésben, olvassa el a HOL.VAN műveletek egyesítése című témakört.

Az irányviszony-leírások egy nyíl vizuális ábrázolását használják a kapcsolat irányának jelzésére. A nyíl szögletes zárójelek ([]) által félretett szóközt tartalmaz egy választható kapcsolatnévhez.

Ez a szakasz a kapcsolatok különböző irányainak szintaxisát mutatja be. Az értékekre lecserélendő helyőrző értékek a következők source_twin_or_twin_collection : és target_twin_or_twin_collection.

Balról jobbra kapcsolat esetén használja az alábbi szintaxist.

-- SELECT ... FROM ...
MATCH (source_twin_or_twin_collection)-[]->(target_twin_or_twin_collection)
-- WHERE ...

Jobbról balra kapcsolatok esetén használja az alábbi szintaxist.

-- SELECT ... FROM ...
MATCH (target_twin_or_twin_collection)<-[]-(source_twin_or_twin_collection)
-- WHERE ...

Nem irányított kapcsolat esetén használja az alábbi szintaxist. Ez nem ad meg irányt a kapcsolathoz, így a rendszer bármilyen irányú kapcsolatot tartalmaz az eredményben.

-- SELECT ... FROM ...
MATCH (source_twin_or_twin_collection)-[]-(target_twin_or_twin_collection)
-- WHERE ...

Tipp.

A nem irányított lekérdezések további feldolgozást igényelnek, ami megnövelheti a késést és a költségeket.

Példák

Az első példa egy balról jobbra irányuló bejárást mutat be. Ez a lekérdezés megkeresi az ikerszobát és a gyárat, ahol...

  • Room targets Factory (bármilyen névvel a kapcsolat)
  • A helyiség hőmérséklete 50-nél nagyobb
  • A Factory rendelkezik ABC-vel $dtId
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)-[]->(Factory) 
WHERE Room.temperature > 50 AND Factory.$dtId = 'ABC'

Feljegyzés

A MATCH lekérdezések, amelyek a MATCH bejárás kezdő ikerpéldányától eltérő ikerpéldányon szűrőt tartalmaznak $dtId , üres eredményeket jeleníthetnek meg. Ez a fenti példában is érvényes factory.$dtId . További információ: Korlátozások.

Az alábbi példa egy jobbról balra irányuló bejárást mutat be. Ez a lekérdezés a fentihez hasonlóan néz ki, de a Room és a Factory közötti kapcsolat iránya fordított. Ez a lekérdezés megkeresi az ikerszobát és a gyárat, ahol...

  • Gyári célok Szoba (bármilyen névvel a kapcsolat)
  • A Factory rendelkezik ABC-vel $dtId
  • A helyiség hőmérséklete 50-nél nagyobb
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)<-[]-(Factory) 
WHERE Factory.$dtId = 'ABC' AND Room.temperature > 50

Az alábbi példa egy nem irányított bejárást mutat be. Ez a lekérdezés megkeresi az ikerszobát és a gyárat, ahol...

  • A Room és a Factory bármilyen kapcsolatnevet megoszt, bármelyik irányba haladva
  • A Factory rendelkezik ABC-vel $dtId
  • A helyiség páraértéke nagyobb, mint 70
SELECT Factory, Room FROM DIGITALTWINS MATCH (Factory)-[]-(Room) 
WHERE Factory.$dtId ='ABC'  AND Room.humidity > 70

Kapcsolatnév megadása

A záradékban található MATCH kapcsolati feltétellel megadhatja az ikerpéldányok közötti kapcsolatok nevét. Megadhat egyetlen nevet vagy a lehetséges nevek listáját. A kapcsolat irányának megadásához a választható kapcsolat neve szerepel a nyílszintaxis részeként.

Ha nem ad meg kapcsolatnevet, a lekérdezés alapértelmezés szerint az összes kapcsolatnevet tartalmazza.

Tipp.

A kapcsolatnevek lekérdezésben való megadása javíthatja a teljesítményt, és kiszámíthatóbbá teheti az eredményeket.

Szintaxis

Feljegyzés

Az ebben a szakaszban szereplő példák a kapcsolat nevére összpontosítanak. Mindegyik nem irányított kapcsolatokat jelenít meg, alapértelmezés szerint egyetlen ugráshoz, és nem rendel hozzá lekérdezési változókat a kapcsolatokhoz. Az egyéb feltételekkel kapcsolatos további műveletekről a kapcsolat irányának megadása, az ugrások számának megadása és a lekérdezési változó hozzárendelése a kapcsolathoz című témakörben olvashat bővebben. További információ arról, hogy ezek közül több hogyan használható együtt ugyanabban a lekérdezésben, olvassa el a HOL.VAN műveletek egyesítése című témakört.

Adja meg a szögletes zárójelben ([]) lévő záradékban MATCH a kettőspont (:) után áthaladó kapcsolat nevét. Ez a szakasz az elnevezett kapcsolatok megadásának szintaxisát mutatja be.

Egyetlen név esetén használja az alábbi szintaxist. Az értékekkel helyettesítendő helyőrző értékek a következőktwin_or_twin_collection_1: és relationship_nametwin_or_twin_collection_2.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[:relationship_name]-(twin_or_twin_collection_2)
-- WHERE ...

Több lehetséges név esetén használja az alábbi szintaxist. Az értékekkel twin_or_twin_collection_1helyettesítendő helyőrző értékek a következők: , relationship_name_option_1, relationship_name_option_2, twin_or_twin_collection_2, és a megjegyzés, amely szükség szerint folytatja a mintát a beírandó kapcsolatnevek számához.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[:relationship_name_option_1|relationship_name_option_2|continue pattern as needed...]-(twin_or_twin_collection_2)
-- WHERE ...

Fontos

A szögletes zárójeleken belüli kettőspont (:) a szintaxis kötelező része egy kapcsolatnév lekérdezésben MATCH való megadásához. Ha nem tartalmazza a kettőspontot, a lekérdezés nem ad meg kapcsolatnevet. Ehelyett van egy lekérdezése, amely egy lekérdezési változót rendel a kapcsolathoz.

(Alapértelmezett) Ha meg nem határozott nevet szeretne hagyni, hagyja üresen a zárójeleket a névadatokból, például:

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[]-(twin_or_twin_collection_2)
-- WHERE ...

Példák

Az alábbi példa egyetlen kapcsolatnevet mutat be. Ez a lekérdezés megkeresi az ikerpéldányokat, ahol...

  • Az épület "tartalmaz" kapcsolatot az érzékelővel (mindkét irányba haladva)
  • Épület rendelkezik egy $dtId "Seattle21"
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

Az alábbi példa több lehetséges kapcsolatnevet mutat be. Ez a lekérdezés a fentihez hasonlóan néz ki, de az eredmény több lehetséges kapcsolatnevet is tartalmaz. Ez a lekérdezés megkeresi az ikerpéldányokat, ahol...

  • Az épület "tartalmaz" vagy "isAssociatedWith" kapcsolatot létesít az érzékelővel (bármelyik irányba haladva)
  • Épület rendelkezik egy $dtId "Seattle21"
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains|isAssociatedWith]-(Sensor)  
WHERE building.$dtId = 'Seattle21'

Az alábbi példában nincs megadva kapcsolatnév. Ennek eredményeképpen a lekérdezés eredményében bármilyen névvel rendelkező kapcsolatok is megjelennek. Ez a lekérdezés megkeresi az ikerpéldányokat, ahol...

  • Az épület kapcsolatban áll az érzékelővel bármilyen névvel (és bármelyik irányba halad)
  • Épület rendelkezik egy $dtId "Seattle21"
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building-[]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

Ugrások számának megadása

A záradék kapcsolati MATCH feltételével megadhatja az ikerpéldányok közötti kapcsolatok ugrásainak számát. Pontos számot vagy tartományt is megadhat. Ez az opcionális érték a nyílszintaxis részeként jelenik meg a kapcsolat irányának megadásához.

Ha nem ad meg több ugrást, a lekérdezés alapértelmezés szerint egy ugrás lesz.

Fontos

Ha egynél több ugrást ad meg, nem rendelhet lekérdezési változót a kapcsolathoz. Ezen feltételek közül csak egy használható ugyanazon a lekérdezésen belül.

Szintaxis

Feljegyzés

Az ebben a szakaszban szereplő példák a ugrások számára összpontosítanak. Mindegyik nem irányított kapcsolatokat jelenít meg nevek megadása nélkül. Az egyéb feltételekkel kapcsolatos további műveletekről a Kapcsolat irányának megadása és a Kapcsolatnév megadása című témakörben olvashat bővebben. További információ arról, hogy ezek közül több hogyan használható együtt ugyanabban a lekérdezésben, olvassa el a HOL.VAN műveletek egyesítése című témakört.

Adja meg a szögletes zárójelek ([]) záradékában MATCH a járandó ugrások számát.

A ugrások pontos számának megadásához használja az alábbi szintaxist. Az értékekkel helyettesítendő helyőrző értékek a következőktwin_or_twin_collection_1: és number_of_hopstwin_or_twin_collection_2.

-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[*number_of_hops]-(twin_or_twin_collection_2)
-- WHERE ...

Ugrástartomány megadásához használja az alábbi szintaxist. Az értékekkel helyettesítendő helyőrző értékek a következőktwin_or_twin_collection_1: és ending_limitstarting_limittwin_or_twin_collection_2. A kezdőkorlát nem szerepel a tartományban, míg a záró korlátot is tartalmazza.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[*starting_limit..ending_limit]-(twin_or_twin_collection_2)
-- WHERE ...

A kezdő korlátot is kihagyhatja, hogy "bármi legyen" (és beleértve) a záró korlátot. A záró korlátot mindig meg kell adni.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)-[*..ending_limit]-(twin_or_twin_collection_2)
-- WHERE ...

(Alapértelmezett) Ha az alapértelmezett érték egy ugrás, hagyja üresen a szögletes zárójeleket a ugrási adatokból, például a következő módon:

-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[]-(twin_or_twin_collection_2)
-- WHERE ...

Példák

Az alábbi példa pontosan megadja a ugrások számát. A lekérdezés csak az ikerpéldányok padlója és a helyiség közötti kapcsolatokat adja vissza, amelyek pontosan 3 ugrást jelentenek.

SELECT Floor, Room FROM DIGITALTWINS 
MATCH (Floor)-[*3]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Az alábbi példa egy ugrástartományt határoz meg. A lekérdezés 1 és 3 ugrás közötti kapcsolatokat ad vissza az ikrek emelete és helyisége között (ami azt jelenti, hogy a ugrások száma 2 vagy 3).

SELECT Floor, Room FROM DIGITALTWINS 
MATCH (Floor)-[*1..3]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Egy tartományt úgy is megjeleníthet, hogy csak egy határt ad meg. A következő példában a lekérdezés legfeljebb 2 ugrást tartalmazó ikerpéldányok és helyiség közötti kapcsolatokat ad vissza (vagyis a ugrások száma 1 vagy 2).

SELECT Floor, Room FROM DIGITALTWINS 
MATCH (Floor)-[*..2]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Az alábbi példában nincs megadva a ugrások száma, ezért alapértelmezés szerint egy ugrás lesz az ikrek padlója és a szoba között.

SELECT Floor, Room FROM DIGITALTWINS  
MATCH (Floor)-[]-(Room)
WHERE Floor.$dtId = 'thermostat-15'

Lekérdezési változó hozzárendelése a kapcsolathoz (és adja meg a kapcsolat tulajdonságait)

Igény szerint hozzárendelhet egy lekérdezési változót a MATCH záradékban hivatkozott kapcsolathoz, hogy név szerint hivatkozzon rá a lekérdezés szövegében.

Ennek hasznos eredménye a záradék kapcsolati tulajdonságainak szűrése WHERE .

Fontos

Lekérdezésváltozó hozzárendelése a kapcsolathoz csak akkor támogatott, ha a lekérdezés egyetlen ugrást határoz meg. Egy lekérdezésen belül választania kell egy kapcsolatváltozó megadása és a nagyobb számú ugrás megadása között.

Szintaxis

Feljegyzés

Az ebben a szakaszban szereplő példák a kapcsolat lekérdezési változójára összpontosítanak. Mindegyik nem irányított kapcsolatokat jelenít meg nevek megadása nélkül. Az egyéb feltételekkel kapcsolatos további műveletekről a Kapcsolat irányának megadása és a Kapcsolatnév megadása című témakörben olvashat bővebben. További információ arról, hogy ezek közül több hogyan használható együtt ugyanabban a lekérdezésben, olvassa el a HOL.VAN műveletek egyesítése című témakört.

Ha egy lekérdezési változót szeretne hozzárendelni a kapcsolathoz, tegye a változó nevét a szögletes zárójelek közé ([]). Az alábbi helyőrző értékek, amelyeket az értékekre kell cserélni, a következők: twin_or_twin_collection_1és twin_or_twin_collection_2relationship_variable.

-- SELECT ... FROM ...   
MATCH (twin_or_twin_collection_1)-[relationship_variable]-(twin_or_twin_collection_2>) 
-- WHERE ...

Példák

Az alábbi példa egy "Rel" lekérdezési változót rendel a kapcsolathoz. Később a WHERE záradékban a változót használja annak meghatározására, hogy a Rel kapcsolatnak rendelkeznie kell egy "gyermek" értékkel rendelkező névtulajdonsággal.

SELECT Floor,Cafe, Rel DIGITALTWINS   
MATCH (Floor)-[Rel]-(Cafe)  
WHERE Floor.$dtId = 'thermostat-15' AND Rel.name = 'child'

MATCH-műveletek egyesítése

Ugyanabban a lekérdezésben több kapcsolati feltételt is kombinálhat. Több kapcsolati feltételt is összekapcsolhat a kétirányú kapcsolatok vagy más nagyobb kombinációk kifejezéséhez.

Syntax

Egyetlen lekérdezésben kombinálhatja a kapcsolat irányát, a kapcsolat nevét és az ugrások vagy a lekérdezésváltozó-hozzárendelésekegyikét.

Az alábbi szintaxisbeli példák bemutatják, hogyan kombinálhatók ezek az attribútumok. A helyőrzőkben megjelenő választható adatok bármelyikét kihagyhatja a feltétel adott részének kihagyásához.

Ha egyetlen lekérdezésen belül meg szeretné adni a kapcsolat irányát, a kapcsolat nevét és a ugrások számát, használja az alábbi szintaxist a kapcsolati feltételen belül. Az értékekre lecserélendő helyőrző értékek a következőktwin_or_twin_collection_1: és optional_left_angle_brackettwin_or_twin_collection_2, és optional_right_angle_bracket, relationship_name(s)ésnumber_of_hops.

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)optional_left_angle_bracket-[:relationship_name(s)*number_of_hops]-optional_right_angle_bracket(twin_or_twin_collection_2)
-- WHERE

A kapcsolat irányának, a kapcsolat nevének és egy lekérdezési változónak az egyetlen lekérdezésen belüli kapcsolathoz való megadásához használja az alábbi szintaxist a kapcsolati feltételen belül. Az értékekre lecserélendő helyőrző értékek a következőktwin_or_twin_collection_1: és optional_left_angle_brackettwin_or_twin_collection_2, és optional_right_angle_bracket, relationship_variableésrelationship_name(s).

-- SELECT ... FROM ...
MATCH (twin_or_twin_collection_1)optional_left_angle_bracket-[relationship_variable:relationship_name(s)]-optional_right_angle_bracket(twin_or_twin_collection_2)
-- WHERE

Feljegyzés

A kapcsolat irányának megadására szolgáló beállításoknak megfelelően balról jobbra vagy jobbról balra kapcsolatokhoz balról jobbra tartó szögletes zárójelet kell választania. Mindkettő nem szerepelhet ugyanazon a nyílon, de láncolással kétirányú kapcsolatokat jelölhet.

Ehhez hasonlóan több kapcsolati feltételt is összefűzhet. Az értékekkel helyettesítendő helyőrző értékek a következők twin_or_twin_collection_1: az összes példány relationship_conditionés twin_or_twin_collection_2.

--Chained relationship conditions
-- SELECT ... FROM ... 
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)-[relationship_condition]-(twin_or_twin_collection_3)...
WHERE twin_or_twin_collection.$dtId = 'twin_ID'

Példák

Íme egy példa, amely egyesíti a kapcsolat irányát, a kapcsolat nevét és a ugrások számát. Az alábbi lekérdezés megkeresi az ikerpadlót és a helyiséget, ahol a Floor és a Room közötti kapcsolat megfelel az alábbi feltételeknek:

  • a kapcsolat balról jobbra, a Floor a forrás, a Helyiség pedig a cél
  • a kapcsolat neve "contains" vagy "isAssociatedWith"
  • a kapcsolat 4 vagy 5 ugrásból áll

A lekérdezés azt is megadja, hogy az ikerpadló $dtId "termosztát-15" típusú.

SELECT Floor, Room FROM DIGITALTWINS    
MATCH (Floor)-[:contains|isAssociatedWith*3..5]->(Room) 
WHERE Floor.$dtId = 'thermostat-15'

Íme egy példa, amely egyesíti a kapcsolat irányát, a kapcsolat nevét és a kapcsolat elnevezett lekérdezési változóját. Az alábbi lekérdezés megkeresi az ikerpéldányokat, ahol a Floor és a Room közötti kapcsolat egy lekérdezési változóhoz r van rendelve, és megfelel az alábbi feltételeknek:

  • a kapcsolat balról jobbra, a Floor a forrás, a Helyiség pedig a cél
  • a kapcsolat neve "contains" vagy "isAssociatedWith"
  • a lekérdezési változót rkapott kapcsolat hossza 10

A lekérdezés azt is megadja, hogy az ikerpadló $dtId "termosztát-15" típusú.

SELECT Floor, Room FROM DIGITALTWINS    
MATCH (Floor)-[r:contains|isAssociatedWith]->(Room) 
WHERE Floor.$dtId = 'thermostat-15' AND r.length = 10

Az alábbi példa a láncolt kapcsolati feltételeket szemlélteti. A lekérdezés megkeresi a Floor, a Cafe és a Room ikerpéldányokat, ahol...

  • a Floor és a Room közötti kapcsolat megfelel az alábbi feltételeknek:
    • a kapcsolat balról jobbra, a Floor a forrás, a Cafe pedig a cél
    • a kapcsolat neve "contains" vagy "isAssociatedWith"
    • a lekérdezési változót rkapott kapcsolat hossza 10
  • a Cafe és a Room közötti kapcsolat megfelel az alábbi feltételeknek:
    • a kapcsolat jobbról balra, a Room a forrás, a Cafe pedig a cél
    • a kapcsolat neve "van" vagy "tartalmaz"
    • a kapcsolat legfeljebb 3 (tehát 1, 2 vagy 3) ugrással rendelkezik

A lekérdezés azt is megadja, hogy az ikerpadló "termosztát-15", a twin Cafe pedig 55-ös hőmérséklettel rendelkezik $dtId .

SELECT Floor,Room, Cafe FROM DIGITALTWINS    
MATCH (Floor)-[r:contains|isAssociatedWith]->(Cafe)<-[has|includes*..3]-(Room)  
WHERE Floor.$dtId = 'thermostat-15'  AND r.length = 10 AND Cafe.temperature = 55

Láncolt kapcsolati feltételekkel is kifejezheti a kétirányú kapcsolatokat. Az alábbi lekérdezés megkeresi az ikerpéldányok emeletét, helyiségét és épületét, ahol...

  • az épület és a padló közötti kapcsolat megfelel az alábbi feltételeknek:
    • a kapcsolat balról jobbra, az épület a forrás, a floor pedig a cél
    • a kapcsolat neve "isAssociatedWith"
    • a kapcsolat lekérdezési változót kap r1
  • a Floor és a Room közötti kapcsolat megfelel az alábbi feltételeknek:
    • a kapcsolat jobbról balra, a Helyiség a forrás, a Floor pedig a cél
    • a kapcsolat neve "isAssociatedWith"
    • a kapcsolat lekérdezési változót kap r2

A lekérdezés azt is megadja, hogy az ikerépület $dtId "building-3" típusú, a Room pedig 50-nél magasabb hőmérsékletű.

SELECT Floor, Room, Building FROM DIGITALTWINS    
MATCH (Building)-[r1:isAssociatedWith]->(Floor)<-[r2:isAssociatedWith]-(Room)
WHERE Building.$dtId = 'building-3'  AND Room.temperature > 50

Korlátozások

A következő korlátozások vonatkoznak a következő lekérdezésekre MATCH:

  • Lekérdezési utasításonként csak egy MATCH kifejezés támogatott.

  • $dtId a záradékban WHERE kötelező megadni.

  • Lekérdezésváltozó hozzárendelése a kapcsolathoz csak akkor támogatott, ha a lekérdezés egyetlen ugrást határoz meg.

  • A lekérdezésekben támogatott ugrások maximális száma 10.

  • A MATCH lekérdezések, amelyek a MATCH bejárás kezdő ikerpéldányától eltérő ikerpéldányon szűrőt tartalmaznak $dtId , üres eredményeket jeleníthetnek meg. A következő lekérdezésre például ez a korlátozás vonatkozik:

    SELECT A, B, C FROM DIGITALTWINS 
    MATCH A-[contains]->B-[is_part_of]->C 
    WHERE B.$dtId = 'Device01'
    

    Ha a forgatókönyv megköveteli, hogy más ikerpéldányokon is használjon $dtId , fontolja meg inkább a JOIN záradék használatát.

  • Az ugyanazon az ikerpéldányon többször áthaladó MATCH-lekérdezések váratlanul eltávolíthatják ezt az ikerpéldányt az eredményekből.