Rumah > hujung hadapan web > tutorial js > Soalan Temuduga JavaScript Penting yang Perlu Anda Tahu

Soalan Temuduga JavaScript Penting yang Perlu Anda Tahu

PHPz
Lepaskan: 2024-07-18 07:11:49
asal
771 orang telah melayarinya

Essential JavaScript Interview Questions You Need to Know

pengenalan

Bahasa Pertanyaan Cypher (CQL) ialah alat berkuasa yang direka untuk menanya pangkalan data graf. Tidak seperti pangkalan data hubungan tradisional, pangkalan data graf cemerlang dalam mengurus data yang sangat berkaitan dengan hubungan yang tidak ditentukan. CQL menyediakan sintaks yang intuitif dan berkuasa, menjadikannya lebih mudah untuk mencipta, membaca, mengemas kini dan memadam data yang disimpan dalam pangkalan data graf. Dalam panduan komprehensif ini, kami akan meneroka ciri, kekangan, istilah dan arahan CQL, bersama-sama dengan contoh praktikal untuk membantu anda memanfaatkan potensi sepenuhnya.

Jadual Kandungan

Ciri-ciri Bahasa Pertanyaan Cypher (CQL)

Sesuai untuk Data Sangat Bersambung

Salah satu ciri menonjol CQL ialah kesesuaiannya untuk data yang sangat bersambung. Tidak seperti pangkalan data hubungan, di mana perhubungan selalunya rumit dan menyusahkan untuk diurus, pangkalan data graf berkembang maju pada sambungan. CQL membolehkan pertanyaan intuitif dan cekap tentang perhubungan ini, menjadikannya pilihan ideal untuk rangkaian sosial, enjin pengesyoran dan banyak lagi.

Label Berbilang untuk Nod

Dalam CQL, nod boleh dikaitkan dengan berbilang label. Fleksibiliti ini membolehkan organisasi dan pengkategorian data yang lebih baik. Sebagai contoh, nod yang mewakili seseorang boleh mempunyai label seperti Orang, Pekerja dan Pelanggan, masing-masing mewakili aspek identiti individu yang berbeza.

Kekangan CQL

Had Pecahan

Walaupun CQL berkuasa, ia mempunyai beberapa kekangan. Pemecahan hanya boleh dilakukan untuk domain tertentu. Ini bermakna, dalam beberapa kes, data mungkin perlu dilalui secara keseluruhan untuk mendapatkan jawapan yang pasti.

Traversal Graf Penuh untuk Jawapan Definitif

Untuk sesetengah pertanyaan, terutamanya yang melibatkan perhubungan yang kompleks, keseluruhan graf mungkin perlu dilalui untuk memastikan data yang dikembalikan adalah tepat dan lengkap. Ini boleh menjadi intensif sumber dan memakan masa, bergantung pada saiz dan kerumitan graf.

Terminologi dalam CQL

Nod

Nod mewakili entiti dalam graf. Nod boleh mempunyai sifat yang menyimpan maklumat tentang entiti, seperti nama, umur atau sebarang atribut lain yang berkaitan.

Label

Label membenarkan pengumpulan nod. Mereka menggantikan konsep jadual dalam SQL. Contohnya, nod dengan label Orang mengumpulkan semua nod yang mewakili orang.

Perhubungan

Perhubungan ialah pautan terwujud antara dua nod. Ini menggantikan tanggapan hubungan dalam SQL, membolehkan sambungan langsung antara entiti.

Atribut

Atribut ialah sifat yang boleh dimiliki oleh nod atau hubungan. Sebagai contoh, nod Orang mungkin mempunyai atribut seperti nama dan umur, manakala hubungan SUKA mungkin mempunyai atribut seperti sejak itu.

Perintah Asas dalam CQL

CIPTA

Arahan CREATE digunakan untuk mencipta nod dan perhubungan. Ini adalah asas untuk membina struktur graf.

PERLAWANAN

Arahan MATCH digunakan untuk mencari corak dalam graf. Ia adalah asas untuk membuat pertanyaan dalam CQL, membolehkan anda mendapatkan semula nod dan perhubungan berdasarkan kriteria yang ditentukan.

Mencipta Nod

Penciptaan Nod Asas

Mencipta nod dalam CQL adalah mudah. Gunakan arahan CREATE diikuti dengan butiran nod.

CREATE (:Person {name:\"John\", age:30})
CREATE (:Food {name:\"Pizza\"})

Salin selepas log masuk

Mencipta Nod dengan Sifat

Nod boleh dibuat dengan sifat, iaitu pasangan nilai kunci yang menyimpan maklumat tentang nod.

CREATE (:Person {name:\"Jane\", age:25, occupation:\"Engineer\"})
CREATE (:Food {name:\"Burger\", calories:500})

Salin selepas log masuk

Mencari Nod

Carian Nod Asas

Arahan MATCH membolehkan anda mencari nod dalam graf.

MATCH (p:Person) RETURN p

Salin selepas log masuk

Carian Terperinci dengan Klausa WHERE

Untuk carian yang lebih khusus, gunakan klausa WHERE untuk menapis nod berdasarkan sifatnya.

MATCH (p:Person)
WHERE p.age > 20
RETURN p.name, p.age

Salin selepas log masuk

Mewujudkan Perhubungan

Mencipta Perhubungan Semasa Mencipta Nod

Anda boleh mencipta perhubungan antara nod semasa anda menciptanya.

CREATE (p:Person {name:\"John\", age:30})-[:LIKES]->(f:Food {name:\"Pizza\"})

Salin selepas log masuk

Mencipta Perhubungan Antara Nod Sedia Ada

Perhubungan juga boleh dibuat antara nod sedia ada menggunakan arahan MATCH.

MATCH (p:Person {name:\"John\"})
MATCH (f:Food {name:\"Pizza\"})
CREATE (p)-[r:LIKES]->(f)
RETURN r

Salin selepas log masuk

Mengubah suai Nod dan Perhubungan

Menambah Atribut

Atribut boleh ditambah pada nod sedia ada menggunakan arahan SET.

MATCH (p:Person {name:\"John\"})
SET p.occupation = \"Developer\"
RETURN p

Salin selepas log masuk

Memadam Atribut

Untuk memadamkan atribut, tetapkan nilainya kepada NULL.

MATCH (p:Person {name:\"John\"})
SET p.age = NULL
RETURN p

Salin selepas log masuk

Modifying Attributes

Attributes can be modified by setting them to new values.

MATCH (p:Person {name:\"John\"})
SET p.age = 35
RETURN p

Salin selepas log masuk

Using Aggregate Functions in CQL

COUNT

The COUNT function returns the number of nodes or relationships.

MATCH (n) RETURN count(n)

Salin selepas log masuk

AVG

The AVG function calculates the average value of a numeric property.

MATCH (n) RETURN avg(n.age)

Salin selepas log masuk

SUM

The SUM function calculates the total sum of a numeric property.

MATCH (n) RETURN sum(n.age)

Salin selepas log masuk

Advanced Queries in CQL

Number of Relations by Type

To get the count of each type of relationship in the graph, use the type function.

MATCH ()-[r]->() RETURN type(r), count(*)

Salin selepas log masuk

Collecting Values into Lists

The COLLECT function creates a list of all values for a given property.

MATCH (p:Product)-[:BELONGS_TO]->(o:Order)
RETURN id(o) as orderId, collect(p)

Salin selepas log masuk
Salin selepas log masuk

Database Maintenance in CQL

Deleting Nodes and Relationships

To delete all nodes and relationships, use the DELETE command.

MATCH (a)-[r]->(b) DELETE a, r, b

Salin selepas log masuk

Visualizing Database Schema

Visualize the database schema to understand the structure of your graph.

CALL db.schema.visualization YIELD nodes, relationships

Salin selepas log masuk

Practical Tricks and Tips

Finding Specific Nodes

Here are three ways to find a node representing a person named Lana Wachowski.

// Solution 1
MATCH (p:Person {name: \"Lana Wachowski\"})
RETURN p

// Solution 2
MATCH (p:Person)
WHERE p.name = \"Lana Wachowski\"
RETURN p

// Solution 3
MATCH (p:Person)
WHERE p.name =~ \".*Lana Wachowski.*\"
RETURN p

Salin selepas log masuk

Complex Query Examples

Display the name and role of people born after 1960 who acted in movies released in the 1980s.

MATCH (p:Person)-[a:ACTED_IN]->(m:Movie)
WHERE p.born > 1960 AND m.released >= 1980 AND m.released < 1990
RETURN p.name, a.roles

Salin selepas log masuk

Add the label Actor to people who have acted in at least one movie.

MATCH (p:Person)-[:ACTED_IN]->(:Movie)
WHERE NOT (p:Actor)
SET p:Actor

Salin selepas log masuk

Application Examples

Real-World Use Cases

Consider a database for an online store where you need to manage products, clients, orders, and shipping addresses. Here's how you might model this in CQL.

Example Queries

Let's create some example nodes and relationships for an online store scenario:

CREATE (p1:Product {id: 1, name: \"Laptop\", price: 1000})
CREATE (p2:Product {id: 2, name: \"Phone\", price: 500})
CREATE (c:Client {id: 1, name: \"John Doe\"})
CREATE (o:Order {id: 1, date: \"2023-06-01\"})
CREATE (adr:Address {id: 1, street: \"123 Main St\", city: \"Anytown\", country: \"USA\"})

Salin selepas log masuk

Now, let's create the relationships between these nodes:

CREATE (p1)-[:BELONGS_TO]->(o)
CREATE (p2)-[:BELONGS_TO]->(o)
CREATE (c)-[:MADE]->(o)
CREATE (o)-[:SHIPPED_TO]->(adr)

Salin selepas log masuk

Querying Products Ordered in Each Order

To find out the products ordered in each order, including their quantity and unit price, use the following query:

MATCH (p:Product)-[:BELONGS_TO]->(o:Order)
RETURN id(o) as orderId, collect(p)

Salin selepas log masuk
Salin selepas log masuk

Querying Clients and Shipping Addresses

To determine which client made each order and where each order was shipped, use this query:

MATCH (c:Client)-[:MADE]->(o:Order)-[:SHIPPED_TO]->(adr:Address)
RETURN c.name as client, id(o) as orderId, adr.street, adr.city, adr.country

Salin selepas log masuk

FAQ

What is Cypher Query Language (CQL)?

Cypher Query Language (CQL) is a powerful query language designed specifically for querying and updating graph databases. It allows you to interact with data in a way that emphasizes the relationships between data points.

How does CQL differ from SQL?

While SQL is designed for querying relational databases, CQL is designed for graph databases. This means that CQL excels at handling complex, highly connected data, whereas SQL is better suited for tabular data structures.

Can I use CQL with any database?

CQL is primarily used with Neo4j, a popular graph database management system. However, other graph databases may have their own query languages with similar capabilities.

What are the benefits of using CQL?

CQL allows for intuitive querying of graph databases, making it easier to manage and analyze data with complex relationships. It supports a rich set of commands for creating, updating, and deleting nodes and relationships, as well as powerful query capabilities.

Is CQL difficult to learn?

CQL is designed to be user-friendly and intuitive. If you are familiar with SQL, you will find many similarities in CQL. The main difference lies in how data relationships are handled.

How can I optimize my CQL queries?

Optimizing CQL queries involves understanding your graph's structure and using efficient query patterns. Indexing frequently searched properties and avoiding unnecessary full graph traversals can significantly improve performance.

Conclusion

Cypher Query Language (CQL) is a robust tool for managing graph databases, offering powerful capabilities for querying and updating complex, highly connected data. By mastering CQL, you can leverage the full potential of graph databases, making it easier to handle intricate data relationships and perform sophisticated analyses.

Atas ialah kandungan terperinci Soalan Temuduga JavaScript Penting yang Perlu Anda Tahu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan