OrientDB - ฟังก์ชัน
บทนี้อธิบายการอ้างอิงที่สมบูรณ์ของฟังก์ชันประเภทต่างๆใน OrientDB ตารางต่อไปนี้กำหนดรายการฟังก์ชันซึ่งแบ่งตามฟังก์ชันการทำงาน
ฟังก์ชั่นกราฟ
ซีเนียร์ | ชื่อฟังก์ชันและคำอธิบาย |
---|---|
1 | Out(): รับจุดยอดขาออกที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex Syntax - ออก ([<label-1>] [, <label-n>] *) |
2 | In(): รับจุดยอดขาเข้าที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex Syntax - ใน ([<label-1>] [, <label-n>] *) |
3 | Both(): รับจุดยอดขาออกและขาเข้าที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex Syntax - ทั้ง ([<label1>] [, <label-n>] *) |
4 | outE(): รับขอบขาออกที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex Syntax - outE ([<label1>] [, <label-n>] *) |
5 | inE(): รับขอบขาเข้าที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex Syntax - inE ([<label1>] [, <label-n>] *) |
6 | bothE(): รับขอบขาออกและขาเข้าที่อยู่ติดกันโดยเริ่มจากระเบียนปัจจุบันเป็น Vertex Syntax - ทั้ง E ([<label1>] [, <label-n>] *) |
7 | outV(): รับจุดยอดขาออกโดยเริ่มจากบันทึกปัจจุบันเป็น Edge Syntax - outV () |
8 | inV(): รับจุดยอดที่เข้ามาจากบันทึกปัจจุบันเป็น Edge Syntax - inV () |
9 | traversedElement(): ส่งคืนอิลิเมนต์ traversed ในคำสั่ง Traverse Syntax - traversedElement (<index> [, <items>]) |
10 | traversedVertex(): ส่งกลับจุดยอดที่ข้ามผ่านในคำสั่ง Traverse Syntax - traversedVertex (<index> [, <items>]) |
11 | traversedEdge(): ส่งกลับขอบที่ข้ามในคำสั่ง Traverse Syntax - traversedEdge (<index> [, <items>]) |
12 | shortestPath(): ส่งกลับเส้นทางที่สั้นที่สุดระหว่างจุดยอดสองจุด ทิศทางสามารถเป็น OUT (ค่าเริ่มต้น), IN หรือ BOTH Synatx - shortestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]]) |
13 | dijkstra(): ส่งคืนเส้นทางที่ถูกที่สุดระหว่างจุดยอดสองจุดโดยใช้อัลกอริทึม Dijkstra Syntax - dijkstra (<sourceVertex>, <destinationVertex>, <weightEdgeFieldName> [, <direction>]) |
ลองใช้ฟังก์ชันกราฟร่วมกับคำค้นหาต่อไปนี้
ดำเนินการค้นหาต่อไปนี้เพื่อรับจุดยอดขาออกทั้งหมดจากจุดยอดรถทั้งหมด
orientdb {db = demo}>SELECT out() from Vehicle
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
---+----------+---------
# | @class | out
---+----------+---------
0 | Vehicle | #11:2
1 | Vehicle | #13:1
2 | Vehicle | #13:4
---+----------+---------
ดำเนินการค้นหาต่อไปนี้เพื่อรับจุดยอดทั้งขาเข้าและขาออกจากจุดยอด # 11: 3
orientdb {db = demo}>SELECT both() FROM #11:3
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
---+----------+--------+-------
# | @class | out | in
---+----------+--------+-------
0 | Vehicle | #13:2 | #10:2
---+----------+-------+-------
ฟังก์ชันคณิตศาสตร์
ซีเนียร์ | ชื่อฟังก์ชันและคำอธิบาย |
---|---|
1 | eval(): ประเมินนิพจน์ระหว่างอัญประกาศ (หรือเครื่องหมายคำพูดคู่) Syntax - eval ('<นิพจน์>') |
2 | min(): ส่งคืนค่าต่ำสุด หากเรียกใช้ด้วยพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์จะส่งคืนค่าอาร์กิวเมนต์ขั้นต่ำระหว่างอาร์กิวเมนต์ทั้งหมด Syntax - นาที (<field> [, <field-n>] *) |
3 | max(): ส่งคืนค่าสูงสุด หากเรียกใช้ด้วยพารามิเตอร์มากกว่าหนึ่งพารามิเตอร์ให้ส่งกลับค่าสูงสุดระหว่างอาร์กิวเมนต์ทั้งหมด Syntax - สูงสุด (<field> [, <field-n>] *) |
4 | sum() ส่งคืนผลรวมของค่าทั้งหมดที่ส่งคืน Syntax - ผลรวม (<field>) |
5 | abs(): ส่งคืนค่าสัมบูรณ์ ใช้งานได้กับ Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null Syntax - หน้าท้อง (<field>) |
6 | avg(): ส่งคืนค่าเฉลี่ย Syntax - เฉลี่ย (<field>) |
7 | count(): นับระเบียนที่ตรงกับเงื่อนไขแบบสอบถาม หากไม่ได้ใช้ * เป็นฟิลด์เรกคอร์ดจะถูกนับก็ต่อเมื่อเนื้อหาไม่เป็นโมฆะ Syntax - นับ (<field>) |
8 | mode(): ส่งคืนค่าที่เกิดขึ้นพร้อมกับความถี่ที่มากที่สุด Nulls จะถูกละเว้นในการคำนวณ Syntax - โหมด (<field>) |
9 | median(): ส่งคืนค่ากลางหรือค่า interpolated ที่แสดงถึงค่ากลางหลังจากจัดเรียงค่าแล้ว Nulls จะถูกละเว้นในการคำนวณ Syntax - ค่ามัธยฐาน (<field>) |
10 | percentile(): ส่งคืนเปอร์เซ็นไทล์ที่ n Null จะถูกละเว้นในการคำนวณ Syntax - เปอร์เซ็นไทล์ (<field> [, <quantile-n>] *) |
11 | variance() ส่งกลับค่าความแปรปรวนกลาง: ค่าเฉลี่ยของผลต่างกำลังสองจากค่าเฉลี่ย
Syntax - ความแปรปรวน (<field>) |
12 | stddev() ส่งกลับค่าเบี่ยงเบนมาตรฐาน: การวัดว่าค่ากระจายออกเป็นอย่างไร Nulls จะถูกละเว้นในการคำนวณ Syntax - stddev (<ฟิลด์>) |
ลองใช้ฟังก์ชันทางคณิตศาสตร์โดยใช้แบบสอบถามต่อไปนี้
ดำเนินการค้นหาต่อไปนี้เพื่อรับผลรวมของเงินเดือนของพนักงานทั้งหมด
orientdb {db = demo}>SELECT SUM(salary) FROM Employee
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
---+----------+---------
# | @CLASS | sum
---+----------+---------
0 | null | 150000
---+----------+---------
ดำเนินการค้นหาต่อไปนี้เพื่อรับเงินเดือนเฉลี่ยของพนักงานทั้งหมด
orientdb {db = demo}>SELECT avg(salary) FROM Employee
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
---+----------+---------
# | @CLASS | avg
---+----------+---------
0 | null | 25
---+----------+---------
ฟังก์ชันคอลเลกชัน
ซีเนียร์ | ชื่อฟังก์ชันและคำอธิบาย |
---|---|
1 | set(): เพิ่มค่าให้กับชุด หากค่าเป็นคอลเล็กชันจะรวมเข้ากับชุดนั้นมิฉะนั้นจะเพิ่ม <value> Syntax - ตั้งค่า (<ฟิลด์>) |
2 | map(): เพิ่มมูลค่าให้กับแผนที่ในครั้งแรกที่สร้างแผนที่ หาก <value> เป็นแผนที่จะรวมเข้ากับแผนที่มิฉะนั้นคู่ <key> และ <value> จะถูกเพิ่มลงในแผนที่เป็นรายการใหม่ Syntax - แผนที่ (<key>, <value>) |
3 | ist(): เพิ่มค่าลงในรายการในครั้งแรกที่สร้างรายการ หาก <value> เป็นคอลเล็กชันจะรวมเข้ากับรายการมิฉะนั้น <value> จะถูกเพิ่มในรายการ Syntax - รายการ (<field>) |
4 | difference(): ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านเพียงอาร์กิวเมนต์เดียวจากนั้นจะรวมมิฉะนั้นจะดำเนินการและส่งกลับค่าความแตกต่างระหว่างคอลเล็กชันที่ได้รับเป็นพารามิเตอร์ Syntax - ความแตกต่าง (<field> [, <field-n>] *) |
5 | first(): ดึงเฉพาะรายการแรกของเขตข้อมูลหลายค่า (อาร์เรย์คอลเลกชันและแผนที่) สำหรับชนิดที่ไม่ใช่หลายค่าให้ส่งคืนค่า Syntax - แรก (<field>) |
6 | intersect(): ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านเพียงอาร์กิวเมนต์เดียวจากนั้นจะรวมหรือดำเนินการและส่งกลับค่า INTERACTION ของคอลเล็กชันที่ได้รับเป็นพารามิเตอร์ Syntax - ตัดกัน (<field> [, <field-n>] *) |
7 | distinct(): ดึงเฉพาะรายการข้อมูลที่ไม่ซ้ำกันขึ้นอยู่กับฟิลด์ที่คุณระบุเป็นอาร์กิวเมนต์ ความแตกต่างหลักเมื่อเทียบกับ SQL DISTINCT มาตรฐานคือด้วย OrientDB ฟังก์ชันที่มีวงเล็บและสามารถระบุได้เพียงช่องเดียว Syntax - แตกต่าง (<field>) |
8 | expand(): ฟังก์ชันนี้มีสองความหมาย
Syntax - ขยาย (<field>) |
9 | unionall(): ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านอาร์กิวเมนต์เพียงรายการเดียวจากนั้นจะรวมมิฉะนั้นจะดำเนินการและส่งคืน UNION ของคอลเล็กชันทั้งหมดที่ได้รับเป็นพารามิเตอร์ ยังทำงานโดยไม่มีค่าคอลเลกชัน Syntax - ยูเนี่ยนอล (<field> [, <field-n>] *) |
10 | flatten(): แยกคอลเล็กชันในฟิลด์และใช้เป็นผลลัพธ์ เลิกใช้แล้วให้ใช้ expand () แทน Syntax - แบน (<field>) |
11 | last(): ดึงเฉพาะรายการสุดท้ายของเขตข้อมูลหลายค่า (อาร์เรย์คอลเลกชันและแผนที่) สำหรับชนิดที่ไม่ใช่หลายค่าให้ส่งคืนค่า Syntax - สุดท้าย (<field>) |
12 | symmetricDifference(): ทำงานเป็นแบบรวมหรือแบบอินไลน์ หากมีการส่งผ่านอาร์กิวเมนต์เดียวเท่านั้นจากนั้นจะรวมมิฉะนั้นจะดำเนินการและส่งกลับค่า SYMMETRIC DIFFERENCE ระหว่างคอลเล็กชันที่ได้รับเป็นพารามิเตอร์ Syntax - สมมาตร (<field> [, <field-n>] *) |
ลองใช้ฟังก์ชันการเก็บรวบรวมโดยใช้คำค้นหาต่อไปนี้
ดำเนินการค้นหาต่อไปนี้เพื่อรับชุดครูที่สอนชั้น 9
orientdb {db = demo}>SELECT ID, set(teacher.id) AS teacherID from classess where class_id = 9
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
---+----------+--------+--------------------------
# | @CLASS | id | TeacherID
---+----------+--------+--------------------------
0 | null | 9 | 1201, 1202, 1205, 1208
---+----------+-------+---------------------------
ฟังก์ชันอื่น ๆ
ซีเนียร์ | ชื่อฟังก์ชันและคำอธิบาย |
---|---|
1 | date(): ส่งคืนวันที่ที่จัดรูปแบบสตริง <date-as-string> คือวันที่ในรูปแบบสตริงและ <format> คือรูปแบบวันที่ตามกฎเหล่านี้ Syntax - วันที่ (<date-as-string> [<format>] [, <timezone>]) |
2 | sysdate(): ส่งคืนวันที่และเวลาปัจจุบัน Syntax - sysdate ([<format>] [, <timezone>]) |
3 | format(): จัดรูปแบบค่าโดยใช้หลักการ String.format () Syntax - รูปแบบ (<format> [, <arg1>] (, <arg-n>] *. md) |
4 | distance(): ส่งกลับระยะห่างระหว่างจุดสองจุดในโลกโดยใช้อัลกอริทึม Haversine พิกัดต้องเป็นองศา Syntax - ระยะทาง (<x-field>, <y-field>, <x-value>, <y-value>) |
5 | ifnull(): ส่งคืนฟิลด์ / ค่าที่ส่งผ่าน (หรือพารามิเตอร์ทางเลือก return_value_if_not_null) หากฟิลด์ / ค่าไม่เป็นโมฆะจะส่งคืน return_value_if_null Syntax - ifnull (<ฟิลด์ | ค่า>, <return_value_if_null> [, <return_value_if_not_null>] (, <ฟิลด์ & .md # 124; ค่า>] *) |
6 | coalesce(): ส่งคืนฟิลด์ / ค่าแรกไม่ใช่พารามิเตอร์ null หากไม่มีฟิลด์ / ค่าใดที่ไม่ใช่ค่าว่างให้ส่งกลับค่า null Syntax - รวมกัน (<ฟิลด์ | ค่า> [, <ฟิลด์ -n | ค่า -n>] *) |
7 | uuid(): สร้าง UUID เป็นค่า 128 บิตโดยใช้ตัวแปร Leach-Salz Syntax - uuid () |
8 | if(): ประเมินเงื่อนไข (พารามิเตอร์ตัวแรก) และส่งกลับพารามิเตอร์ที่สองหากเงื่อนไขเป็นจริงมิฉะนั้นเงื่อนไขที่สาม Syntax - ถ้า (<expression>, <result-if-true>, <result-if-false>) |
ลองใช้ฟังก์ชันอื่น ๆ โดยใช้แบบสอบถามต่อไปนี้
ดำเนินการสอบถามต่อไปนี้เพื่อเรียนรู้วิธีดำเนินการนิพจน์ if
orientdb {db = demo}> SELECT if(eval("name = 'satish'"), "My name is satish",
"My name is not satish") FROM Employee
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
----+--------+-----------------------
# |@CLASS | IF
----+--------+-----------------------
0 |null |My name is satish
1 |null |My name is not satish
2 |null |My name is not satish
3 |null |My name is not satish
4 |null |My name is not satish
----+--------+------------------------
ดำเนินการค้นหาต่อไปนี้เพื่อรับวันที่ของระบบ
orientdb {db = demo}> SELECT SYSDATE() FROM Employee
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
----+--------+-----------------------
# |@CLASS | SYSDATE
----+--------+-----------------------
0 |null |2016-02-10 12:05:06
1 |null |2016-02-10 12:05:06
2 |null |2016-02-10 12:05:06
3 |null |2016-02-10 12:05:06
4 |null |2016-02-10 12:05:06
----+--------+------------------------
เมื่อใช้ฟังก์ชันนี้อย่างละเอียดคุณสามารถจัดการข้อมูล OrientDB ได้อย่างง่ายดาย