مرجع لغة استعلام Azure Digital Twins: عبارة MATCH (معاينة)
يحتوي هذا المستند على معلومات مرجعية حول بند MATCHللغة استعلام Azure Digital Twins. هذا البند قيد المعاينة حاليا.
MATCH يتم استخدام العبارة في لغة استعلام Azure Digital Twins كجزء من بند FROM. MATCH يسمح لك بتحديد النمط الذي يجب اتباعه أثناء اجتياز العلاقات في الرسم البياني Azure Digital Twins (يعرف هذا أيضا باسم نمط استعلام "القفزة المتغيرة").
هذه الفقرة اختيارية أثناء الاستعلام.
بناء الجملة الأساسية: MATCH
MATCH يدعم أي استعلام يجد مسارا بين التوائم مع عدد لا يمكن التنبؤ به من القفزات ، بناء على ظروف علاقة معينة.
يمكن أن يتضمن شرط العلاقة واحدا أو أكثر من التفاصيل التالية:
- اتجاه العلاقة (من اليسار إلى اليمين أو من اليمين إلى اليسار أو غير الاتجاه)
- اسم العلاقة (اسم واحد أو قائمة بالاحتمالات)
- عدد "القفزات" من توأم إلى آخر (العدد الدقيق أو النطاق)
- تعيين متغير استعلام لتمثيل العلاقة داخل نص الاستعلام. سيسمح لك هذا أيضا بالتصفية على خصائص العلاقة.
يجب أن يستخدم الاستعلام الذي يحتوي على MATCH بند أيضا العبارة WHERE لتحديد $dtId واحد على الأقل من التوائم التي يشير إليها.
ملاحظة
MATCH هي مجموعة متراكبة من جميع JOIN الاستعلامات التي يمكن إجراؤها في مخزن الاستعلام.
بناء الجملة
إليك بناء الجملة الأساسي MATCH .
قيم العنصر النائب الموضحة MATCH في العبارة التي يجب استبدالها بقيمك هي twin_1، relationship_conditionو twin_2. قيم العنصر النائب في WHERE العبارة التي يجب استبدالها بقيمك هي twin_or_twin_collection و twin_ID.
--SELECT ... FROM ...
MATCH (twin_1)-[relationship_condition]-(twin_2)
WHERE twin_or_twin_collection.$dtId = 'twin_ID'
-- AND ...
يمكنك ترك اسم أحد التوائم من أجل السماح لأي اسم توأم بالعمل في تلك البقعة.
يمكنك أيضا تغيير عدد شروط العلاقة ، بحيث يكون لديك شروط علاقة متعددة السلسلة أو لا يوجد شرط علاقة على الإطلاق:
--Chained relationship conditions
-- SELECT ... FROM ...
MATCH (twin_1)-[relationship_condition]-(twin_2)-[relationship_condition]-(twin_3)...
WHERE twin_or_twin_collection.$dtId = 'twin_ID'
-- No relationship condition
-- SELECT ... FROM ...
MATCH (twin_1)
WHERE twin_or_twin_collection.$dtId = 'twin_ID'
لمزيد من التفاصيل حول كل نوع من أنواع حالات العلاقة وكيفية دمجها، راجع الأقسام الأخرى من هذا المستند.
مثال
فيما يلي مثال على الاستعلام باستخدام MATCH.
يحدد الاستعلام اتجاه العلاقة، ويبحث عن توائم البناء والمستشعر حيث...
- يتم استهداف المستشعر من خلال أي علاقة من توأم المبنى مع
$dtIdالمبنى 21 ، و - المستشعر لديه درجة حرارة أعلى من 50. يتم تضمين كل من المبنى والمستشعر في نتيجة الاستعلام.
SELECT Building, Sensor FROM DIGITALTWINS
MATCH (Building)-[]->(Sensor)
WHERE Building.$dtId = 'Building21' AND Sensor.temperature > 50
تحديد اتجاه العلاقة
استخدم شرط العلاقة في MATCH العبارة لتحديد اتجاه العلاقة بين التوائم. تتضمن الاتجاهات المحتملة من اليسار إلى اليمين أو من اليمين إلى اليسار أو غير الاتجاه. يتم اكتشاف العلاقات الدورية تلقائيا ، بحيث يتم اجتياز العلاقة مرة واحدة فقط.
ملاحظة
من الممكن تمثيل العلاقات ثنائية الاتجاه باستخدام السلسلة.
بناء الجملة
ملاحظة
تركز الأمثلة الواردة في هذا القسم على اتجاه العلاقة. فهي لا تحدد أسماء العلاقات، وتكون افتراضية لقفزة واحدة، ولا تعين متغيرات استعلام للعلاقات. للحصول على إرشادات حول كيفية القيام بالمزيد مع هذه الشروط الأخرى، راجع تحديد اسم العلاقةوتحديد عدد القفزاتوتعيين متغير استعلام للعلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.
تستخدم أوصاف العلاقة الاتجاهية تصويرا مرئيا لسهم للإشارة إلى اتجاه العلاقة. يتضمن السهم مسافة مخصصة بين قوسين معقوفين ([]) لاسم علاقة اختياري.
يعرض هذا القسم بناء الجملة لاتجاهات العلاقات المختلفة. قيم العنصر النائب التي يجب استبدالها بقيمك هي source_twin و target_twin.
بالنسبة للعلاقة من اليسار إلى اليمين ، استخدم بناء الجملة التالي.
-- SELECT ... FROM ...
MATCH (source_twin)-[]->(target_twin)
-- WHERE ...
بالنسبة للعلاقة من اليمين إلى اليسار ، استخدم بناء الجملة التالي.
-- SELECT ... FROM ...
MATCH (target_twin)<-[]-(source_twin)
-- WHERE ...
بالنسبة لعلاقة غير اتجاهية ، استخدم بناء الجملة التالي. لن يحدد هذا اتجاها للعلاقة ، لذلك سيتم تضمين علاقات أي اتجاه في النتيجة.
-- SELECT ... FROM ...
MATCH (source_twin)-[]-(target_twin)
-- WHERE ...
تلميح
تتطلب الاستعلامات غير الاتجاهية معالجة إضافية ، مما قد يؤدي إلى زيادة زمن الوصول والتكلفة.
أمثلة
يوضح المثال الأول اجتياز اتجاهي من اليسار إلى اليمين. يجد هذا الاستعلام غرفة التوائم والمصنع حيث...
- غرفة تستهدف المصنع (مع أي اسم علاقة)
- تحتوي الغرفة على قيمة درجة حرارة أكبر من 50
- المصنع لديه من
$dtId"ABC"
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)-[]->(Factory)
WHERE Room.temperature > 50 AND Factory.$dtId = 'ABC'
ملاحظة
قد تظهر استعلامات MATCH التي تحتوي $dtId على عوامل تصفية على أي توأم آخر غير التوأم المبدئي لاجتياز MATCH نتائج فارغة. هذا ينطبق على factory.$dtId المثال أعلاه. لمزيد من المعلومات، راجع القيود.
يوضح المثال التالي اجتيازا اتجاهيا من اليمين إلى اليسار. يبدو هذا الاستعلام مشابها للاستعلام أعلاه، ولكن يتم عكس اتجاه العلاقة بين الغرفة والمصنع. يجد هذا الاستعلام غرفة التوائم والمصنع حيث...
- غرفة أهداف المصنع (مع أي اسم علاقة)
- المصنع لديه من
$dtId"ABC" - تحتوي الغرفة على قيمة درجة حرارة أكبر من 50
SELECT Room, Factory FROM DIGITALTWINS MATCH (Room)<-[]-(Factory)
WHERE Factory.$dtId = 'ABC' AND Room.temperature > 50
يوضح المثال التالي اجتيازا غير اتجاهي. يجد هذا الاستعلام غرفة التوائم والمصنع حيث...
- تشترك الغرفة والمصنع في أي اسم للعلاقة ، ويسيران في أي من الاتجاهين
- المصنع لديه من
$dtId"ABC" - تحتوي الغرفة على قيمة رطوبة أكبر من 70
SELECT Factory, Room FROM DIGITALTWINS MATCH (Factory)-[]-(Room)
WHERE Factory.$dtId ='ABC' AND Room.humidity > 70
تحديد اسم العلاقة
اختياريا، يمكنك استخدام شرط العلاقة في العبارة لتحديد أسماء العلاقات بين التوائم MATCH . يمكنك تحديد اسم واحد أو قائمة بالأسماء المحتملة. يتم تضمين اسم العلاقة الاختياري كجزء من بناء جملة السهم لتحديد اتجاه العلاقة.
إذا لم تقدم اسم علاقة، فسيتضمن الاستعلام جميع أسماء العلاقات بشكل افتراضي.
تلميح
يمكن أن يؤدي تحديد أسماء العلاقات في الاستعلام إلى تحسين الأداء وجعل النتائج أكثر قابلية للتنبؤ.
بناء الجملة
ملاحظة
تركز الأمثلة الواردة في هذا القسم على اسم العلاقة. تظهر جميعها علاقات غير اتجاهية ، وهي افتراضية لقفزة واحدة ، ولا تعين متغيرات استعلام للعلاقات. للحصول على إرشادات حول كيفية القيام بالمزيد مع هذه الشروط الأخرى، راجع تحديد اتجاه العلاقةوتحديد عدد القفزاتوتعيين متغير استعلام للعلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.
حدد اسم علاقة للعبور في MATCH الجملة بين قوسين معقوفين ([]). يعرض هذا القسم بناء جملة تحديد العلاقات المسماة.
بالنسبة لاسم واحد، استخدم بناء الجملة التالي. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1، relationship_nameو twin_2.
-- SELECT ... FROM ...
MATCH (twin_1)-[:relationship_name]-(twin_2)
-- WHERE ...
بالنسبة لعدة أسماء محتملة ، استخدم بناء الجملة التالي. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1، relationship_name_option_1، ، ، twin_2relationship_name_option_2والملاحظة لمتابعة النمط حسب الحاجة لعدد أسماء العلاقات التي تريد إدخالها.
-- SELECT ... FROM ...
MATCH (twin_1)-[:relationship_name_option_1|relationship_name_option_2|continue pattern as needed...]-(twin_2)
-- WHERE ...
(افتراضي) لترك الاسم دون تحديد، اترك الأقواس فارغة من معلومات الاسم، كما يلي:
-- SELECT ... FROM ...
MATCH (twin_1)-[]-(twin_2)
-- WHERE ...
أمثلة
يوضح المثال التالي اسم علاقة واحدة. يجد هذا الاستعلام التوائم بناء وجهاز استشعار حيث...
- المبنى لديه علاقة "احتواء" مع المستشعر (الذهاب في أي من الاتجاهين)
- يحتوي المبنى على
$dtId"Seattle21"
SELECT Building, Sensor FROM DIGITALTWINS
MATCH (Building)-[:contains]-(Sensor)
WHERE Building.$dtId = 'Seattle21'
يوضح المثال التالي أسماء علاقات متعددة محتملة. يبدو هذا الاستعلام مشابها للاستعلام أعلاه، ولكن هناك العديد من أسماء العلاقات المحتملة المضمنة في النتيجة. يجد هذا الاستعلام التوائم بناء وجهاز استشعار حيث...
- المبنى لديه إما علاقة "يحتوي على" أو "isAssociatedWith" بالمستشعر (يسير في أي من الاتجاهين)
- يحتوي المبنى على
$dtId"Seattle21"
SELECT Building, Sensor FROM DIGITALTWINS
MATCH (Building)-[:contains|isAssociatedWith]-(Sensor)
WHERE building.$dtId = 'Seattle21'
المثال التالي ليس له اسم علاقة محدد. ونتيجة لذلك، سيتم تضمين العلاقات مع أي اسم في نتيجة الاستعلام. يجد هذا الاستعلام التوائم بناء وجهاز استشعار حيث...
- المبنى له علاقة بالمستشعر بأي اسم (ويسير في أي من الاتجاهين)
- يحتوي المبنى على
$dtId"Seattle21"
SELECT Building, Sensor FROM DIGITALTWINS
MATCH (Building-[]-(Sensor)
WHERE Building.$dtId = 'Seattle21'
تحديد عدد القفزات
اختياريا، يمكنك استخدام شرط العلاقة في MATCH العبارة لتحديد عدد القفزات للعلاقات بين التوائم. يمكنك تحديد رقم دقيق أو نطاق. يتم تضمين هذه القيمة الاختيارية كجزء من بناء جملة السهم لتحديد اتجاه العلاقة.
إذا لم تقدم عددا من القفزات، تعيين الاستعلام افتراضيا إلى قفزة واحدة.
هام
إذا قمت بتحديد عدد من القفزات أكبر من واحد، فلن تتمكن من تعيين متغير استعلام للعلاقة. يمكن استخدام شرط واحد فقط من هذه الشروط ضمن نفس الاستعلام.
بناء الجملة
ملاحظة
تركز الأمثلة الواردة في هذا القسم على عدد القفزات. تظهر جميعها علاقات غير اتجاهية دون تحديد أسماء. للحصول على إرشادات حول كيفية القيام بالمزيد مع هذه الشروط الأخرى، راجع تحديد اتجاه العلاقةوتحديد اسم العلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.
حدد عدد القفزات التي يجب اجتيازها MATCH في الجملة داخل الأقواس المعقوفة ([]).
لتحديد عدد دقيق من القفزات، استخدم بناء الجملة التالي. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1، number_of_hopsو twin_2.
-- SELECT ... FROM ...
MATCH (twin_1)-[*number_of_hops]-(twin_2)
-- WHERE ...
لتحديد نطاق من القفزات، استخدم بناء الجملة التالي. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1، starting_limitو twin_2. ending_limit لا يتم تضمين حد البدء في النطاق، بينما يتم تضمين حد الانتهاء.
-- SELECT ... FROM ...
MATCH (twin_1)-[*starting_limit..ending_limit]-(twin_2)
-- WHERE ...
يمكنك أيضا ترك حد البدء للإشارة إلى "أي شيء يصل إلى" (بما في ذلك) حد النهاية. يجب دائما توفير حد نهائي.
-- SELECT ... FROM ...
MATCH (twin_1)-[*..ending_limit]-(twin_2)
-- WHERE ...
(افتراضي) للإعداد الافتراضي لقفزة واحدة، اترك الأقواس فارغة من معلومات القفزة، كما يلي:
-- SELECT ... FROM ...
MATCH (twin_1)-[]-(twin_2)
-- WHERE ...
أمثلة
يحدد المثال التالي عددا دقيقا من القفزات. سيقوم الاستعلام فقط بإرجاع العلاقات بين التوائم Floor و Room التي هي بالضبط 3 قفزات.
SELECT * FROM DIGITALTWINS
MATCH (Floor)-[*3]-(Room)
WHERE Floor.$dtId = 'thermostat-15'
يحدد المثال التالي مجموعة من القفزات. سيقوم الاستعلام بإرجاع العلاقات بين التوائم Floor والغرفة التي تتراوح بين 1 و 3 قفزات (مما يعني أن عدد القفزات إما 2 أو 3).
SELECT * FROM DIGITALTWINS
MATCH (Floor)-[*1..3]-(Room)
WHERE Floor.$dtId = 'thermostat-15'
يمكنك أيضا إظهار نطاق من خلال توفير حد واحد فقط. في المثال التالي، سيقوم الاستعلام بإرجاع العلاقات بين التوائم Floor والغرفة التي هي على الأكثر قفزتين (مما يعني أن عدد القفزات إما 1 أو 2).
SELECT * FROM DIGITALTWINS
MATCH (Floor)-[*..2]-(Room)
WHERE Floor.$dtId = 'thermostat-15'
المثال التالي لا يحتوي على عدد محدد من القفزات ، لذلك سيتم افتراضيا قفزة واحدة بين طابق التوائم والغرفة.
SELECT * FROM DIGITALTWINS
MATCH (Floor)-[]-(Room)
WHERE Floor.$dtId = 'thermostat-15'
تعيين متغير استعلام للعلاقة (وتحديد خصائص العلاقة)
اختياريا، يمكنك تعيين متغير استعلام للعلاقة المشار إليها في العبارة، بحيث يمكنك الرجوع إليها بالاسم في MATCH نص الاستعلام.
نتيجة مفيدة للقيام بذلك هي القدرة على تصفية خصائص العلاقة في العبارة الخاصة بك WHERE .
هام
يتم دعم تعيين متغير استعلام للعلاقة فقط عندما يحدد الاستعلام قفزة واحدة. ضمن استعلام، يجب عليك الاختيار بين تحديد متغير علاقة وتحديد عدد أكبر من القفزات.
بناء الجملة
ملاحظة
تركز الأمثلة الواردة في هذا القسم على متغير استعلام للعلاقة. تظهر جميعها علاقات غير اتجاهية دون تحديد أسماء. للحصول على إرشادات حول كيفية القيام بالمزيد مع هذه الشروط الأخرى، راجع تحديد اتجاه العلاقةوتحديد اسم العلاقة. للحصول على معلومات حول كيفية استخدام العديد من هذه معا في نفس الاستعلام، راجع دمج عمليات MATCH.
لتعيين متغير استعلام للعلاقة، ضع اسم المتغير بين قوسين معقوفين ([]). قيم العناصر النائبة الموضحة أدناه والتي يجب استبدالها بقيمك هي twin_1، relationship_variableو twin_2.
-- SELECT ... FROM ...
MATCH (twin_1)-[relationship_variable]-(twin_2>)
-- WHERE ...
أمثلة
يعين المثال التالي متغير استعلام 'r' للعلاقة. في وقت لاحق ، في WHERE الجملة ، يستخدم المتغير لتحديد أن العلاقة Rel يجب أن يكون لها خاصية اسم بقيمة "طفل".
SELECT Floor,Cafe, Rel DIGITALTWINS
MATCH (Floor)-[Rel]-(Cafe)
WHERE Floor.$dtId = 'thermostat-15' AND Rel.name = 'child'
الجمع بين عمليات MATCH
يمكنك دمج شروط علاقة متعددة في نفس الاستعلام. يمكنك أيضا ربط شروط علاقة متعددة للتعبير عن العلاقات ثنائية الاتجاه أو مجموعات أكبر أخرى.
بناء الجملة
في استعلام واحد، يمكنك دمج اتجاه العلاقة واسم العلاقة وواحد من عدد القفزات أو تعيين متغير استعلام.
توضح أمثلة بناء الجملة التالية كيفية دمج هذه السمات. يمكنك أيضا استبعاد أي من التفاصيل الاختيارية المعروضة في العناصر النائبة لحذف هذا الجزء من الشرط.
لتحديد اتجاه العلاقة واسم العلاقة وعدد القفزات داخل استعلام واحد، استخدم بناء الجملة التالي ضمن شرط العلاقة. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1 و ، و ، optional_left_angle_bracket و optional_right_angle_bracket، relationship_name(s)و number_of_hopstwin_2.
-- SELECT ... FROM ...
MATCH (twin_1)optional_left_angle_bracket-[:relationship_name(s)*number_of_hops]-optional_right_angle_bracket(twin_2)
-- WHERE
لتحديد اتجاه العلاقة واسم العلاقة ومتغير استعلام للعلاقة داخل استعلام واحد، استخدم بناء الجملة التالي ضمن شرط العلاقة. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1 و ، و ، optional_left_angle_bracket و optional_right_angle_bracket، relationship_variableو relationship_name(s)twin_2.
-- SELECT ... FROM ...
MATCH (twin_1)optional_left_angle_bracket-[relationship_variable:relationship_name(s)]-optional_right_angle_bracket(twin_2)
-- WHERE
ملاحظة
وفقا لخيارات تحديد اتجاه العلاقة، يجب عليك الاختيار بين قوس الزاوية اليسرى لعلاقة من اليسار إلى اليمين أو قوس الزاوية اليمنى لعلاقة من اليمين إلى اليسار. لا يمكنك تضمين كليهما على نفس السهم، ولكن يمكنك تمثيل العلاقات ثنائية الاتجاه عن طريق التسلسل.
يمكنك ربط شروط علاقة متعددة معا ، مثل هذا. قيم العناصر النائبة التي يجب استبدالها بقيمك هي twin_1، جميع مثيلات relationship_condition، و twin_2.
--Chained relationship conditions
-- SELECT ... FROM ...
MATCH (twin_1)-[relationship_condition]-(twin_2)-[relationship_condition]-(twin_3)...
WHERE twin_or_twin_collection.$dtId = 'twin_ID'
أمثلة
في ما يلي مثال يجمع بين اتجاه العلاقة واسم العلاقة وعدد القفزات يعثر الاستعلام التالي على التوائم الطابق والغرفة حيث تفي العلاقة بين الطابق والغرفة بهذه الشروط:
- العلاقة من اليسار إلى اليمين، مع الكلمة كمصدر والغرفة كهدف
- العلاقة لها اسم إما "يحتوي على" أو "isAssociatedWith"
- العلاقة لديها إما 4 أو 5 قفزات
يحدد الاستعلام أيضا أن الطابق التوأم يحتوي على $dtId "ترموستات-15".
SELECT Floor, Room FROM DIGITALTWINS
MATCH (Floor)-[:contains|isAssociatedWith*3..5]->(Room)
WHERE Floor.$dtId = 'thermostat-15'
في ما يلي مثال يجمع بين اتجاه العلاقة واسم العلاقة ومتغير استعلام مسمى للعلاقة. يبحث الاستعلام التالي عن التوأم الطابق والغرفة حيث يتم تعيين العلاقة بين الطابق والغرفة إلى متغير r استعلام ويستوفي الشروط التالية:
- العلاقة من اليسار إلى اليمين، مع الكلمة كمصدر والغرفة كهدف
- العلاقة لها اسم إما "يحتوي على" أو "isAssociatedWith"
- العلاقة ، التي تعطى متغير
rاستعلام ، لها خاصية طول تساوي 10
يحدد الاستعلام أيضا أن الطابق التوأم يحتوي على $dtId "ترموستات-15".
SELECT Floor, Room FROM DIGITALTWINS
MATCH (Floor)-[r:contains|isAssociatedWith]->(Room)
WHERE Floor.$dtId = 'thermostat-15' AND r.length = 10
يوضح المثال التالي شروط العلاقة المتسلسلة السلسلة . يجد الاستعلام طابق التوائم ومقهى وغرفة ، حيث ...
- العلاقة بين الطابق والغرفة تستوفي الشروط التالية:
- العلاقة من اليسار إلى اليمين ، مع Floor كمصدر و Cafe كهدف
- العلاقة لها اسم إما "يحتوي على" أو "isAssociatedWith"
- العلاقة ، التي تعطى متغير
rالاستعلام ، لها خاصية طول تساوي 10
- العلاقة بين المقهى والغرفة تستوفي الشروط التالية:
- العلاقة من اليمين إلى اليسار ، مع الغرفة كمصدر والمقهى كهدف
- العلاقة لها اسم إما "لديه" أو "يشمل"
- تحتوي العلاقة على ما يصل إلى 3 قفزات (لذلك 1 أو 2 أو 3)
يحدد الاستعلام أيضا أن الطابق التوأم يحتوي على $dtId "ترموستات-15" ومقهى توين لديه درجة حرارة 55.
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
يمكنك أيضا استخدام شروط العلاقة المتسلسلة للتعبير عن العلاقات ثنائية الاتجاه. يجد الاستعلام التالي طابق التوائم وغرفته ومبناه، حيث...
- العلاقة بين المبنى والطابق تستوفي الشروط التالية:
- العلاقة من اليسار إلى اليمين ، مع المبنى كمصدر والطابق كهدف
- العلاقة لها اسم "isAssociatedWith"
- يتم إعطاء العلاقة متغير استعلام
r1
- العلاقة بين الطابق والغرفة تستوفي الشروط التالية:
- العلاقة من اليمين إلى اليسار ، مع الغرفة كمصدر والأرضية كهدف
- العلاقة لها اسم "isAssociatedWith"
- يتم إعطاء العلاقة متغير استعلام
r2
يحدد الاستعلام أيضا أن المبنى التوأم يحتوي على $dtId "مبنى-3" وأن الغرفة لديها درجة حرارة أكبر من 50.
SELECT Floor, Room, Building FROM DIGITALTWINS
MATCH (Building)-[r1:isAssociatedWith]->(Floor)<-[r2:isAssociatedWith]-(Room)
WHERE Building.$dtId = 'building-3' AND Room.temperature > 50
التقييدات
تنطبق الحدود التالية على الاستعلامات التي تستخدم MATCH:
يتم دعم تعبير واحد
MATCHفقط لكل عبارة استعلام.$dtIdمطلوب فيWHEREالبند.يتم دعم تعيين متغير استعلام للعلاقة فقط عندما يحدد الاستعلام قفزة واحدة.
الحد الأقصى للقفزات المدعومة في استعلام هو 10.
قد تظهر استعلامات MATCH التي تحتوي
$dtIdعلى عوامل تصفية على أي توأم آخر غير التوأم المبدئي لاجتياز MATCH نتائج فارغة. على سبيل المثال، يخضع الاستعلام التالي لهذا القيد:SELECT A, B, C FROM DIGITALTWINS MATCH A-[contains]->B-[is_part_of]->C WHERE B.$dtId = 'Device01'إذا كان السيناريو الخاص بك يتطلب منك استخدامه
$dtIdعلى التوائم الأخرى، ففكر في استخدام عبارة JOIN بدلا من ذلك.قد تؤدي استعلامات MATCH التي تجتاز نفس التوأم عدة مرات إلى إزالة هذا التوأم بشكل غير متوقع من النتائج.