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:
- Kapcsolat iránya (balról jobbra, jobbról balra vagy nem irányított)
- kapcsolat neve (egyetlen név vagy lehetőségek listája)
- Ugrások száma ikerpéldányról egy másikra (pontos szám vagy tartomány)
- Lekérdezési változó hozzárendelése a lekérdezés szövegében lévő kapcsolat ábrázolásához. Ez lehetővé teszi a kapcsolat tulajdonságainak szűrését is.
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:
twin_or_twin_collection
(x2): AMATCH
záradékhoz egy operandusra van szükség, hogy egyetlen ikerpéldányt jelöljön. A másik operandus egy másik ikerpéldányt, vagy egy ikerpéldány-gyűjteményt jelölhet.relationship_condition
: Ebben a térben definiáljon egy feltételt, amely leírja az ikerpéldányok vagy az ikergyűjtemények közötti kapcsolatot. A feltétel megadhatja a kapcsolat irányát, megadhatja a kapcsolat nevét, megadhatja az ugrások számát, megadhatja a kapcsolat tulajdonságait vagy a beállítások bármely kombinációját.twin_ID
: Itt adjon meg egy ikergyűjteményen$dtId
belül, hogy az egyik operandus egyetlen ikerpéldányt jelöljön.
--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.
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_name
twin_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_1
helyettesí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_hops
twin_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_limit
starting_limit
twin_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_2
relationship_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ések egyiké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_bracket
twin_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_bracket
twin_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
r
kapott 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
r
kapott 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ékbanWHERE
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.