Naslaginformatie over azure Digital Twins-querytaal: MATCH-component

Dit document bevat naslaginformatie over de MATCH-component voor de Azure Digital Twins-querytaal.

De MATCH component wordt gebruikt in de Azure Digital Twins-querytaal als onderdeel van de FROM-component. MATCH hiermee kunt u opgeven welk patroon moet worden gevolgd tijdens het doorlopen van relaties in de Azure Digital Twins-grafiek (dit wordt ook wel een 'variabele hop'-querypatroon genoemd).

Deze component is optioneel tijdens het uitvoeren van query's.

Kernsyntaxis: VERGELIJKEN

MATCH ondersteunt elke query die een pad vindt tussen dubbels binnen een bereik van hops, op basis van bepaalde relatievoorwaarden.

De relatievoorwaarde kan een of meer van de volgende gegevens bevatten:

  • Relatierichting (van links naar rechts, van rechts naar links of niet-richting)
  • relatienaam (enkele naam of een lijst met mogelijkheden)
  • Aantal 'hops' van de ene dubbel naar de andere (exact getal of bereik)
  • Een queryvariabeletoewijzing die de relatie in de querytekst vertegenwoordigt. Hiermee kunt u ook filteren op relatie-eigenschappen.

Een query met een MATCH component moet ook de WHERE-component gebruiken om de $dtId voor ten minste één van de dubbels waarnaar wordt verwezen op te geven.

Notitie

MATCH is een superset van alle JOIN query's die kunnen worden uitgevoerd in het queryarchief.

Syntaxis

Hier volgt de basissyntaxis MATCH .

Het bevat deze tijdelijke aanduidingen:

  • twin_or_twin_collection (x2): Voor de MATCH component is één operand vereist om één dubbel weer te geven. De andere operand kan een andere enkele dubbel of een verzameling tweelingen vertegenwoordigen.
  • relationship_condition: Definieer in deze ruimte een voorwaarde die de relatie tussen de tweelingen of tweelingverzamelingen beschrijft. De voorwaarde kan relatierichting opgeven, relatienaam opgeven, aantal hops opgeven, relatie-eigenschappen opgeven of een combinatie van deze opties.
  • twin_ID: Hier geeft u een $dtId in een van de dubbelverzamelingen op, zodat een van de operanden één dubbel vertegenwoordigt.
--SELECT ... FROM ...  
MATCH (twin_or_twin_collection_1)-[relationship_condition]-(twin_or_twin_collection_2)
WHERE twin_or_twin_collection.$dtId = 'twin_ID' 
-- AND ...

U kunt een van de tweelingverzamelingen leeg laten zodat elke tweeling op die plek kan werken.

U kunt ook het aantal relatievoorwaarden wijzigen om meerdere gekoppelde relatievoorwaarden te hebben of helemaal geen relatievoorwaarde:

--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'

Zie de andere secties van dit document voor meer informatie over elk type relatievoorwaarde en hoe u deze combineert.

Opmerking

Hier volgt een voorbeeldquery met behulp van MATCH.

De query geeft een relatierichting op en zoekt naar gebouw- en sensordubbels waar...

  • de sensor wordt gericht op elke relatie van een gebouwdubbel met een $dtId van Building21, en
  • de sensor heeft een temperatuur boven de 50. Het gebouw en de sensor zijn beide opgenomen in het queryresultaat.
SELECT Building, Sensor FROM DIGITALTWINS 
MATCH (Building)-[]->(Sensor) 
WHERE Building.$dtId = 'Building21' AND Sensor.temperature > 50

Relatierichting opgeven

Gebruik de relatievoorwaarde in de MATCH component om een relatierichting tussen de tweelingen op te geven. Mogelijke aanwijzingen zijn van links naar rechts, van rechts naar links of niet-richting. Cyclische relaties worden automatisch gedetecteerd, zodat een relatie slechts één keer wordt doorkruist.

Notitie

Het is mogelijk om bidirectionele relaties te vertegenwoordigen met behulp van ketening.

Syntaxis

Notitie

De voorbeelden in deze sectie richten zich op relatierichting. Ze geven geen relatienamen op, ze worden standaard ingesteld op één hop en ze wijzen geen queryvariabelen toe aan de relaties. Zie Relatienaam opgeven, Aantal hops opgeven en queryvariabele toewijzen aan relatie voor instructies voor meer informatie over hoe u meer kunt doen met deze andere voorwaarden. Zie Vergelijkingsbewerkingen combineren voor informatie over het gebruik van verschillende van deze samen in dezelfde query.

Beschrijvingen van directionele relaties gebruiken een visuele weergave van een pijl om de richting van de relatie aan te geven. De pijl bevat een spatie die is gereserveerd door vierkante haken ([]) voor een optionele relatienaam.

In deze sectie ziet u de syntaxis voor verschillende richtingen van relaties. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn source_twin_or_twin_collection en target_twin_or_twin_collection.

Gebruik de volgende syntaxis voor een links-naar-rechts-relatie .

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

Gebruik de volgende syntaxis voor een rechts-naar-links-relatie .

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

Gebruik de volgende syntaxis voor een niet-directionele relatie. Hiermee wordt geen richting voor de relatie opgegeven, zodat relaties van een willekeurige richting worden opgenomen in het resultaat.

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

Tip

Niet-directionele query's vereisen extra verwerking, wat kan leiden tot een hogere latentie en kosten.

Voorbeelden

In het eerste voorbeeld ziet u een van links naar rechts gerichte doorkruising. Met deze query worden tweelingen Room en Factory gevonden waar...

  • Ruimtedoelen Factory (met een willekeurige naam van relatie)
  • Ruimte heeft een temperatuurwaarde die groter is dan 50
  • Factory heeft een $dtId van 'ABC'
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)-[]->(Factory) 
WHERE Room.temperature > 50 AND Factory.$dtId = 'ABC'

Notitie

VERGELIJKEN-query's die filters bevatten $dtId op een andere dubbel dan de begindubbel voor de MATCH-traversal, kunnen lege resultaten weergeven. Dit is van toepassing factory.$dtId op in het bovenstaande voorbeeld. Zie Beperkingen voor meer informatie.

In het volgende voorbeeld ziet u een van rechts naar links gerichte doorkruising. Deze query ziet er ongeveer als volgt uit, maar de richting van de relatie tussen Ruimte en Factory wordt omgekeerd. Met deze query worden tweelingen Room en Factory gevonden waar...

  • Factory doelen Ruimte (met een willekeurige naam van relatie)
  • Factory heeft een $dtId van 'ABC'
  • Ruimte heeft een temperatuurwaarde die groter is dan 50
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)<-[]-(Factory) 
WHERE Factory.$dtId = 'ABC' AND Room.temperature > 50

In het volgende voorbeeld ziet u een niet-directionele doorkruising. Met deze query worden tweelingen Room en Factory gevonden waar...

  • Ruimte en Factory delen elke naam van de relatie, in beide richtingen
  • Factory heeft een $dtId van 'ABC'
  • Kamer heeft een vochtigheidswaarde die groter is dan 70
SELECT Factory, Room FROM DIGITALTWINS MATCH (Factory)-[]-(Room) 
WHERE Factory.$dtId ='ABC'  AND Room.humidity > 70

Naam van relatie opgeven

U kunt eventueel de relatievoorwaarde in de MATCH component gebruiken om namen op te geven voor de relaties tussen de tweelingen. U kunt één naam of een lijst met mogelijke namen opgeven. De optionele relatienaam wordt opgenomen als onderdeel van de syntaxis van de pijl om de relatierichting op te geven.

Als u geen relatienaam opgeeft, bevat de query standaard alle relatienamen.

Tip

Het opgeven van relatienamen in de query kan de prestaties verbeteren en resultaten voorspelbaarder maken.

Syntaxis

Notitie

De voorbeelden in deze sectie richten zich op de naam van de relatie. Ze tonen allemaal niet-directionele relaties, ze zijn standaard ingesteld op één hop en ze wijzen geen queryvariabelen toe aan de relaties. Zie Relatierichting opgeven, Aantal hops opgeven en queryvariabele toewijzen aan relatie voor instructies over hoe u meer kunt doen met deze andere voorwaarden. Zie Vergelijkingsbewerkingen combineren voor informatie over het gebruik van verschillende van deze samen in dezelfde query.

Geef de naam op van een relatie die moet worden doorkruist in de MATCH component tussen vierkante haken ([]), na een dubbele punt (:). In deze sectie ziet u de syntaxis van het opgeven van benoemde relaties.

Gebruik de volgende syntaxis voor één naam. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1, relationship_nameen twin_or_twin_collection_2.

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

Gebruik de volgende syntaxis voor meerdere mogelijke namen. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijntwin_or_twin_collection_1, en relationship_name_option_1relationship_name_option_2twin_or_twin_collection_2de opmerking om het patroon zo nodig voort te zetten voor het aantal relatienamen dat u wilt invoeren.

-- 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 ...

Belangrijk

De dubbele punt (:) binnen de vierkante haken is een vereist onderdeel van de syntaxis voor het opgeven van een relatienaam in een MATCH query. Als u de dubbele punt niet opneemt, geeft uw query geen relatienaam op. In plaats daarvan hebt u een query waarmee een queryvariabele aan de relatie wordt toegewezen.

(Standaard) Als u de naam niet wilt opgeven, laat u de vierkante haken met naamgegevens leeg, zoals deze:

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

Voorbeelden

In het volgende voorbeeld ziet u één relatienaam. Met deze query worden tweelingen Building en Sensor gevonden waar...

  • Het gebouw heeft een 'contains'-relatie met sensor (in beide richtingen)
  • Gebouw heeft een $dtId 'Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

In het volgende voorbeeld ziet u meerdere mogelijke relatienamen. Deze query ziet er ongeveer als volgt uit, maar er zijn meerdere mogelijke relatienamen in het resultaat. Met deze query worden tweelingen Building en Sensor gevonden waar...

  • Het gebouw heeft een relatie 'contains' of 'isAssociatedWith' met Sensor (in beide richtingen)
  • Gebouw heeft een $dtId 'Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building)-[:contains|isAssociatedWith]-(Sensor)  
WHERE building.$dtId = 'Seattle21'

In het volgende voorbeeld is geen opgegeven relatienaam opgegeven. Als gevolg hiervan worden relaties met een willekeurige naam opgenomen in het queryresultaat. Met deze query worden tweelingen Building en Sensor gevonden waar...

  • Gebouw heeft een relatie met Sensor met elke naam (en gaat in beide richtingen)
  • Gebouw heeft een $dtId 'Seattle21'
SELECT Building, Sensor FROM DIGITALTWINS   
MATCH (Building-[]-(Sensor)  
WHERE Building.$dtId = 'Seattle21'

Aantal hops opgeven

U kunt eventueel de relatievoorwaarde in de MATCH component gebruiken om het aantal hops voor de relaties tussen de tweelingen op te geven. U kunt een exact getal of een bereik opgeven. Deze optionele waarde wordt opgenomen als onderdeel van de syntaxis van de pijl om de relatierichting op te geven.

Als u geen aantal hops opgeeft, wordt de query standaard ingesteld op één hop.

Belangrijk

Als u een aantal hops opgeeft dat groter is dan één, kunt u geen queryvariabele toewijzen aan de relatie. Er kan slechts één van deze voorwaarden worden gebruikt binnen dezelfde query.

Syntaxis

Notitie

De voorbeelden in deze sectie richten zich op het aantal hops. Ze tonen allemaal niet-directionele relaties zonder namen op te geven. Zie Relatierichting opgeven en Relatienaam opgeven voor instructies over hoe u meer kunt doen met deze andere voorwaarden. Zie Vergelijkingsbewerkingen combineren voor informatie over het gebruik van verschillende van deze samen in dezelfde query.

Geef het aantal hops op dat in de MATCH component tussen de vierkante haken ([]) moet worden gekruist.

Als u een exact aantal hops wilt opgeven, gebruikt u de volgende syntaxis. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1, number_of_hopsen twin_or_twin_collection_2.

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

Als u een hopbereik wilt opgeven, gebruikt u de volgende syntaxis. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1, starting_limitending_limit en twin_or_twin_collection_2. De beginlimiet wordt niet opgenomen in het bereik, terwijl de eindlimiet is opgenomen.

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

U kunt ook de beginlimiet weglaten om 'alles tot' (inclusief) de eindlimiet aan te geven. Er moet altijd een eindlimiet worden opgegeven.

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

(Standaard) Als u standaard één hop wilt gebruiken, laat u de haken leeg met hopgegevens, zoals deze:

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

Voorbeelden

In het volgende voorbeeld wordt een exact aantal hops opgegeven. De query retourneert alleen relaties tussen twins Floor en Room die precies 3 hops zijn.

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

In het volgende voorbeeld wordt een bereik van hops opgegeven. De query retourneert relaties tussen tweelingen Floor en Room die tussen 1 en 3 hops liggen (wat betekent dat het aantal hops 2 of 3 is).

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

U kunt ook een bereik weergeven door slechts één grens op te geven. In het volgende voorbeeld retourneert de query relaties tussen tweelingen Floor en Room die maximaal 2 hops zijn (wat betekent dat het aantal hops 1 of 2 is).

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

In het volgende voorbeeld is geen opgegeven aantal hops, dus wordt standaard één hop tussen tweeling floor en room gebruikt.

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

Queryvariabele toewijzen aan relatie (en relatie-eigenschappen opgeven)

U kunt desgewenst een queryvariabele toewijzen aan de relatie waarnaar in de MATCH component wordt verwezen, zodat u ernaar kunt verwijzen op naam in de querytekst.

Een nuttig resultaat hiervan is de mogelijkheid om te filteren op relatie-eigenschappen in uw WHERE component.

Belangrijk

Het toewijzen van een queryvariabele aan de relatie wordt alleen ondersteund wanneer de query één hop opgeeft. In een query moet u kiezen tussen het opgeven van een relatievariabele en het opgeven van een groter aantal hops.

Syntaxis

Notitie

De voorbeelden in deze sectie richten zich op een queryvariabele voor de relatie. Ze tonen allemaal niet-directionele relaties zonder namen op te geven. Zie Relatierichting opgeven en Relatienaam opgeven voor instructies over hoe u meer kunt doen met deze andere voorwaarden. Zie Vergelijkingsbewerkingen combineren voor informatie over het gebruik van verschillende van deze samen in dezelfde query.

Als u een queryvariabele wilt toewijzen aan de relatie, plaatst u de naam van de variabele tussen vierkante haken ([]). De tijdelijke aanduidingen die hieronder worden weergegeven, die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1, relationship_variableen twin_or_twin_collection_2.

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

Voorbeelden

In het volgende voorbeeld wordt een queryvariabele 'Rel' aan de relatie toegewezen. Later wordt in de WHERE component de variabele gebruikt om op te geven dat de relatie Rel een naameigenschap moet hebben met de waarde 'onderliggende'.

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

MATCH-bewerkingen combineren

U kunt meerdere relatievoorwaarden in dezelfde query combineren. U kunt ook meerdere relatievoorwaarden koppelen om bidirectionele relaties of andere grotere combinaties uit te drukken.

Syntaxis

In één query kunt u de relatierichting, relatienaam en een van het aantal hops of een toewijzing van een queryvariabele combineren.

In de volgende syntaxisvoorbeelden ziet u hoe deze kenmerken kunnen worden gecombineerd. U kunt ook alle optionele gegevens weglaten die worden weergegeven in tijdelijke aanduidingen om dat deel van de voorwaarde weg te laten.

Als u de relatierichting, de relatienaam en het aantal hops binnen één query wilt opgeven, gebruikt u de volgende syntaxis binnen de relatievoorwaarde. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1 en twin_or_twin_collection_2, optional_left_angle_bracket en optional_right_angle_bracket, relationship_name(s)en , en number_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

Als u de relatierichting, de relatienaam en een queryvariabele voor de relatie binnen één query wilt opgeven, gebruikt u de volgende syntaxis binnen de relatievoorwaarde. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1 en twin_or_twin_collection_2, optional_left_angle_bracket en optional_right_angle_bracket, relationship_variableen , en relationship_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

Notitie

Op basis van de opties voor het opgeven van relatierichting moet u kiezen tussen een haakje links voor een relatie van links naar rechts of een haakje rechts naar links voor een relatie van rechts naar links. U kunt beide niet opnemen op dezelfde pijl, maar kan bidirectionele relaties vertegenwoordigen door een koppeling te maken.

U kunt meerdere relatievoorwaarden aan elkaar koppelen, zoals deze. De tijdelijke aanduidingen die moeten worden vervangen door uw waarden zijn twin_or_twin_collection_1, alle exemplaren van relationship_conditionen 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'

Voorbeelden

Hier volgt een voorbeeld waarin de relatierichting, de naam van de relatie en het aantal hops worden gecombineerd. Met de volgende query worden tweelingen Floor en Room gevonden waar de relatie tussen Floor en Room aan deze voorwaarden voldoet:

  • de relatie van links naar rechts is, met Floor als bron en Ruimte als doel
  • de relatie heeft een naam van 'contains' of 'isAssociatedWith'
  • de relatie 4 of 5 hops heeft

De query geeft ook aan dat twin Floor een $dtId thermostaat-15 heeft.

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

Hier volgt een voorbeeld waarin relatierichting, relatienaam en een benoemde queryvariabele voor de relatie worden gecombineerd. Met de volgende query worden tweelingen Floor en Room gevonden waarbij de relatie tussen Floor en Room is toegewezen aan een queryvariabele r en aan deze voorwaarden voldoet:

  • de relatie van links naar rechts is, met Floor als bron en Ruimte als doel
  • de relatie heeft een naam van 'contains' of 'isAssociatedWith'
  • de relatie, die een queryvariabele rkrijgt, een lengte-eigenschap heeft die gelijk is aan 10

De query geeft ook aan dat twin Floor een $dtId thermostaat-15 heeft.

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

In het volgende voorbeeld ziet u voorwaarden voor gekoppelde relaties. De query vindt tweelingen Floor, Cafe en Room, waar...

  • de relatie tussen Floor en Room voldoet aan deze voorwaarden:
    • de relatie van links naar rechts is, met Floor als bron en Cafe als doel
    • de relatie heeft een naam van 'contains' of 'isAssociatedWith'
    • de relatie, die een queryvariabele rkrijgt, een lengte-eigenschap heeft die gelijk is aan 10
  • de relatie tussen Cafe en Room voldoet aan deze voorwaarden:
    • de relatie van rechts naar links is, met Room als bron en Cafe als doel
    • de relatie een naam heeft van 'has' of 'includes'
    • de relatie maximaal 3 (dus 1, 2 of 3) hops heeft

De query geeft ook aan dat twin Floor een $dtId 'thermostat-15' heeft en twin Cafe een temperatuur van 55 heeft.

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

U kunt ook gekoppelde relatievoorwaarden gebruiken om bidirectionele relaties uit te drukken. Met de volgende query worden tweelingen Floor, Room en Building gevonden, waar...

  • de relatie tussen Gebouw en Vloer voldoet aan deze voorwaarden:
    • de relatie van links naar rechts is, waarbij Gebouw als bron en Verdieping als doel wordt gebruikt
    • de relatie heeft de naam 'isAssociatedWith'
    • de relatie krijgt een queryvariabele r1
  • de relatie tussen Floor en Room voldoet aan deze voorwaarden:
    • de relatie van rechts naar links is, met Ruimte als bron en Verdieping als doel
    • de relatie heeft de naam 'isAssociatedWith'
    • de relatie krijgt een queryvariabele r2

De query geeft ook aan dat dubbel gebouw een $dtId van 'gebouw-3' heeft en Ruimte een temperatuur heeft die groter is dan 50.

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

Beperkingen

De volgende limieten zijn van toepassing op query's met behulp van MATCH:

  • Er wordt slechts één MATCH expressie ondersteund per query-instructie.

  • $dtId is vereist in de WHERE component.

  • Het toewijzen van een queryvariabele aan de relatie wordt alleen ondersteund wanneer de query één hop opgeeft.

  • De maximale hops die in een query worden ondersteund, zijn 10.

  • VERGELIJKEN-query's die filters bevatten $dtId op een andere dubbel dan de begindubbel voor de MATCH-traversal, kunnen lege resultaten weergeven. De volgende query is bijvoorbeeld onderhevig aan deze beperking:

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

    Als voor uw scenario u voor andere tweelingen moet gebruiken $dtId , kunt u in plaats daarvan de JOIN-component gebruiken.

  • MATCH-query's die meerdere keren dezelfde dubbel doorlopen, kunnen deze dubbel onverwacht uit de resultaten verwijderen.