Neo4j - Hướng dẫn nhanh

Neo4j là Cơ sở dữ liệu đồ thị mã nguồn mở hàng đầu thế giới được phát triển bằng công nghệ Java. Nó có khả năng mở rộng cao và không có lược đồ (NoSQL).

Cơ sở dữ liệu đồ thị là gì?

Đồ thị là một biểu diễn bằng hình ảnh của một tập hợp các đối tượng trong đó một số cặp đối tượng được nối với nhau bằng các liên kết. Nó bao gồm hai yếu tố - nút (đỉnh) và mối quan hệ (cạnh).

Cơ sở dữ liệu đồ thị là cơ sở dữ liệu dùng để mô hình hóa dữ liệu dưới dạng đồ thị. Ở đây, các nút của biểu đồ mô tả các thực thể trong khi các mối quan hệ mô tả sự liên kết của các nút này.

Cơ sở dữ liệu đồ thị phổ biến

Neo4j là một Cơ sở dữ liệu đồ thị phổ biến. Các Cơ sở dữ liệu Đồ thị khác là Cơ sở dữ liệu Oracle NoSQL, OrientDB, HypherGraphDB, GraphBase, InfiniteGraph và AllegroGraph.

Tại sao lại sử dụng cơ sở dữ liệu đồ thị?

Ngày nay, hầu hết dữ liệu tồn tại dưới dạng mối quan hệ giữa các đối tượng khác nhau và thông thường, mối quan hệ giữa dữ liệu có giá trị hơn chính dữ liệu.

Cơ sở dữ liệu quan hệ lưu trữ dữ liệu có cấu trúc cao trong đó có một số bản ghi lưu trữ cùng một loại dữ liệu để chúng có thể được sử dụng để lưu trữ dữ liệu có cấu trúc và chúng không lưu trữ mối quan hệ giữa các dữ liệu.

Không giống như các cơ sở dữ liệu khác, cơ sở dữ liệu đồ thị lưu trữ các mối quan hệ và kết nối dưới dạng các thực thể hạng nhất.

Mô hình dữ liệu cho cơ sở dữ liệu đồ thị đơn giản hơn so với các cơ sở dữ liệu khác và chúng có thể được sử dụng với hệ thống OLTP. Họ cung cấp các tính năng như tính toàn vẹn của giao dịch và tính khả dụng trong hoạt động.

Cơ sở dữ liệu đồ thị RDBMS Vs

Sau đây là bảng so sánh cơ sở dữ liệu Quan hệ và cơ sở dữ liệu Đồ thị.

Sr.No RDBMS Cơ sở dữ liệu đồ thị
1 Những cái bàn Đồ thị
2 Hàng Điểm giao
3 Cột và Dữ liệu Thuộc tính và giá trị của nó
4 Ràng buộc Các mối quan hệ
5 Tham gia Traversal

Ưu điểm của Neo4j

Sau đây là những ưu điểm của Neo4j.

  • Flexible data model - Neo4j cung cấp một mô hình dữ liệu đơn giản và linh hoạt nhưng mạnh mẽ, có thể dễ dàng thay đổi theo các ứng dụng và ngành.

  • Real-time insights - Neo4j cung cấp kết quả dựa trên dữ liệu thời gian thực.

  • High availability - Neo4j rất khả dụng cho các ứng dụng thời gian thực doanh nghiệp lớn với sự đảm bảo về giao dịch.

  • Connected and semi structures data - Sử dụng Neo4j, bạn có thể dễ dàng biểu diễn dữ liệu được kết nối và bán cấu trúc.

  • Easy retrieval - Sử dụng Neo4j, bạn không chỉ có thể biểu diễn mà còn dễ dàng truy xuất (duyệt / điều hướng) dữ liệu được kết nối nhanh hơn khi so sánh với các cơ sở dữ liệu khác.

  • Cypher query language- Neo4j cung cấp một ngôn ngữ truy vấn khai báo để biểu thị biểu đồ một cách trực quan, sử dụng cú pháp ascii-art. Các lệnh của ngôn ngữ này ở định dạng con người có thể đọc được và rất dễ học.

  • No joins - Sử dụng Neo4j, nó KHÔNG yêu cầu các phép nối phức tạp để truy xuất dữ liệu được kết nối / liên quan vì rất dễ dàng truy xuất chi tiết mối quan hệ hoặc nút liền kề của nó mà không cần các phép nối hoặc chỉ mục.

Đặc điểm của Neo4j

Sau đây là các tính năng đáng chú ý của Neo4j:

  • Data model (flexible schema)- Neo4j tuân theo một mô hình dữ liệu có tên là mô hình đồ thị thuộc tính gốc. Ở đây, đồ thị chứa các nút (thực thể) và các nút này được kết nối với nhau (được mô tả bằng các mối quan hệ). Các nút và mối quan hệ lưu trữ dữ liệu trong các cặp khóa-giá trị được gọi là thuộc tính.

    Trong Neo4j, không cần tuân theo một lược đồ cố định. Bạn có thể thêm hoặc bớt các thuộc tính theo yêu cầu. Nó cũng cung cấp các ràng buộc lược đồ.

  • ACID properties - Neo4j hỗ trợ đầy đủ các quy tắc ACID (Tính nguyên tử, Tính nhất quán, Tính cô lập và Độ bền).

  • Scalability and reliability- Bạn có thể mở rộng cơ sở dữ liệu bằng cách tăng số lần đọc / ghi và khối lượng mà không ảnh hưởng đến tốc độ xử lý truy vấn và tính toàn vẹn của dữ liệu. Neo4j cũng cung cấp hỗ trợ choreplication vì sự an toàn và độ tin cậy của dữ liệu.

  • Cypher Query Language- Neo4j cung cấp một ngôn ngữ truy vấn khai báo mạnh mẽ được gọi là Cypher. Nó sử dụng ASCII-art để mô tả đồ thị. Cypher rất dễ học và có thể được sử dụng để tạo và truy xuất quan hệ giữa các dữ liệu mà không cần sử dụng các truy vấn phức tạp như Joins.

  • Built-in web application - Neo4j cung cấp một Neo4j Browserứng dụng web. Sử dụng điều này, bạn có thể tạo và truy vấn dữ liệu biểu đồ của mình.

  • Drivers - Neo4j có thể hoạt động với -

    • API REST để làm việc với các ngôn ngữ lập trình như Java, Spring, Scala, v.v.

    • Java Script để làm việc với các khuôn khổ UI MVC như Node JS.

    • Nó hỗ trợ hai loại API Java: API Cypher và API Java Native để phát triển các ứng dụng Java. Ngoài những thứ này, bạn cũng có thể làm việc với các cơ sở dữ liệu khác như MongoDB, Cassandra, v.v.

  • Indexing - Neo4j hỗ trợ Indexes bằng cách sử dụng Apache Lucence.

Mô hình dữ liệu biểu đồ thuộc tính Neo4j

Cơ sở dữ liệu Đồ thị Neo4j tuân theo Mô hình Đồ thị Thuộc tính để lưu trữ và quản lý dữ liệu của nó.

Sau đây là các tính năng chính của Mô hình Đồ thị Thuộc tính:

  • Mô hình đại diện cho dữ liệu trong Nodes, Mối quan hệ và Thuộc tính

  • Thuộc tính là các cặp khóa-giá trị

  • Các nút được biểu diễn bằng vòng tròn và Mối quan hệ được biểu diễn bằng các phím mũi tên

  • Các mối quan hệ có các hướng: Một chiều và Hai chiều

  • Mỗi Mối quan hệ chứa "Nút bắt đầu" hoặc "Nút Từ" và "Đến nút" hoặc "Nút kết thúc"

  • Cả nút và mối quan hệ đều chứa thuộc tính

  • Mối quan hệ kết nối các nút

Trong Mô hình Dữ liệu Đồ thị Thuộc tính, các mối quan hệ nên có hướng. Nếu chúng ta cố gắng tạo các mối quan hệ mà không có định hướng, thì nó sẽ đưa ra một thông báo lỗi.

Trong Neo4j cũng vậy, các mối quan hệ nên có định hướng. Nếu chúng ta cố gắng tạo ra các mối quan hệ mà không có định hướng, thì Neo4j sẽ đưa ra một thông báo lỗi nói rằng "Các mối quan hệ phải có định hướng".

Cơ sở dữ liệu đồ thị Neo4j lưu trữ tất cả dữ liệu của nó trong Nodes và Mối quan hệ. Chúng tôi không cần bất kỳ Cơ sở dữ liệu RRBMS bổ sung nào hoặc bất kỳ cơ sở dữ liệu SQL nào để lưu trữ dữ liệu cơ sở dữ liệu Neo4j. Nó lưu trữ dữ liệu của mình dưới dạng Đồ thị ở định dạng gốc.

Neo4j sử dụng GPE gốc (Công cụ xử lý đồ thị) để hoạt động với định dạng lưu trữ đồ thị Gốc.

Các khối xây dựng chính của Mô hình dữ liệu Graph DB là:

  • Nodes
  • Relationships
  • Properties

Sau đây là một ví dụ đơn giản về Đồ thị thuộc tính.

Ở đây, chúng tôi đã đại diện cho các Nút sử dụng Vòng kết nối. Các mối quan hệ được biểu diễn bằng Mũi tên. Các mối quan hệ có tính định hướng. Chúng ta có thể biểu diễn dữ liệu của Node dưới dạng Thuộc tính (cặp khóa-giá trị). Trong ví dụ này, chúng tôi đã đại diện cho từng thuộc tính Id của Node trong Vòng kết nối của Node.

Trong chương này, chúng ta sẽ thảo luận về cách cài đặt Neo4j trong hệ thống của bạn bằng cách sử dụng tệp exe.

Thiết lập máy chủ cơ sở dữ liệu Neo4j với tệp exe của Windows

Làm theo các bước dưới đây để tải xuống Neo4j vào hệ thống của bạn.

Step 1 - Truy cập trang web chính thức của Neo4j bằng cách sử dụng https://neo4j.com/. Khi nhấp vào, liên kết này sẽ đưa bạn đến trang chủ của trang web neo4j.

Step 2- Như được đánh dấu trong ảnh chụp màn hình ở trên, trang này có nút Tải xuống ở phía trên bên phải. Nhấp vào nó.

Step 3- Thao tác này sẽ chuyển hướng bạn đến trang tải xuống, nơi bạn có thể tải xuống phiên bản cộng đồng và phiên bản doanh nghiệp của Neo4j. Tải xuống phiên bản cộng đồng của phần mềm bằng cách nhấp vào nút tương ứng.

Step 4- Thao tác này sẽ đưa bạn đến trang nơi bạn có thể tải xuống phiên bản cộng đồng của phần mềm Neo4j tương thích với các hệ điều hành khác nhau. Tải xuống tệp tương ứng với hệ điều hành mong muốn.

Thao tác này sẽ tải xuống một tệp có tên neo4j-community_windows-x64_3_1_1.exe vào hệ thống của bạn như được hiển thị trong ảnh chụp màn hình sau.

Step 5 - Nhấp đúp vào tệp exe để cài đặt Neo4j Server.

Step 6- Chấp nhận thỏa thuận cấp phép và tiến hành cài đặt. Sau khi hoàn thành quá trình, bạn có thể quan sát thấy Neo4j đã được cài đặt trong hệ thống của mình.

Khởi động máy chủ

Step 1 - Nhấp vào menu bắt đầu của Windows và khởi động máy chủ Neo4j bằng cách nhấp vào lối tắt menu bắt đầu cho Neo4j.

Step 2- Khi nhấp vào phím tắt, bạn sẽ nhận được một cửa sổ cho phiên bản Cộng đồng Neo4j. Theo mặc định, nó chọn c: \ Users \ [tên người dùng] \ Documents \ Neo4j \ default.graphdb. Nếu muốn, bạn có thể thay đổi đường dẫn đến một thư mục khác.

Step 3 - Nhấp vào nút "Bắt đầu" để khởi động máy chủ Neo4j.

Sau khi máy chủ khởi động, bạn có thể quan sát thấy thư mục cơ sở dữ liệu được điền như trong ảnh chụp màn hình sau.

Làm việc với Neo4j

Như đã thảo luận trong các chương trước, neo4j cung cấp một ứng dụng duyệt được tích hợp sẵn để làm việc với Neo4j. Bạn có thể truy cập Neo4j bằng URLhttp://localhost:7474/

Cơ sở dữ liệu đồ thị Neo4j có các khối xây dựng sau:

  • Nodes
  • Properties
  • Relationships
  • Labels
  • Trình duyệt dữ liệu

Nút

Nút là một đơn vị cơ bản của Đồ thị. Nó chứa các thuộc tính với các cặp khóa-giá trị như thể hiện trong hình sau.

Ở đây, Node Name = "Employee" và nó chứa một tập hợp các thuộc tính dưới dạng các cặp khóa-giá trị.

Tính chất

Thuộc tính là một cặp khóa-giá trị để mô tả các Nút và Mối quan hệ của Đồ thị.

Key = Value

Trường hợp Khóa là một Chuỗi và Giá trị có thể được biểu diễn bằng bất kỳ kiểu Dữ liệu Neo4j nào.

Các mối quan hệ

Mối quan hệ là một khối xây dựng chính khác của Cơ sở dữ liệu đồ thị. Nó kết nối hai nút như được mô tả trong hình sau.

Ở đây, Emp và Dept là hai nút khác nhau. "WORKS_FOR" là mối quan hệ giữa các nút Emp và Dept.

Như nó biểu thị, dấu mũi tên từ Emp đến Dept, mối quan hệ này mô tả -

Emp WORKS_FOR Dept

Mỗi mối quan hệ chứa một nút bắt đầu và một nút kết thúc.

Ở đây, "Emp" là nút bắt đầu và "Dept" là nút kết thúc.

Vì dấu mũi tên mối quan hệ này biểu thị mối quan hệ từ nút "Emp" đến nút "Dept", mối quan hệ này được gọi là "Mối quan hệ đến" với nút "Dept" và "Mối quan hệ đi" đến nút "Emp".

Giống như các nút, các mối quan hệ cũng có thể chứa các thuộc tính dưới dạng các cặp khóa-giá trị.

Ở đây, mối quan hệ "WORKS_FOR" có một thuộc tính là cặp khóa-giá trị.

Id = 123

Nó đại diện cho một Id của mối quan hệ này.

Nhãn

Nhãn liên kết một tên chung với một tập hợp các nút hoặc mối quan hệ. Một nút hoặc mối quan hệ có thể chứa một hoặc nhiều nhãn. Chúng ta có thể tạo nhãn mới cho các nút hoặc mối quan hệ hiện có. Chúng tôi có thể xóa các nhãn hiện có khỏi các nút hoặc mối quan hệ hiện có.

Từ sơ đồ trước, chúng ta có thể quan sát thấy rằng có hai nút.

Nút bên trái có Nhãn: "Emp" và nút bên phải có Nhãn: "Dept".

Mối quan hệ giữa hai nút đó cũng có một Nhãn: "WORKS_FOR".

Note - Neo4j lưu trữ dữ liệu trong Thuộc tính của Nút hoặc Mối quan hệ.

Trình duyệt dữ liệu Neo4j

Sau khi cài đặt Neo4j, chúng ta có thể truy cập Trình duyệt dữ liệu Neo4j bằng URL sau

http://localhost:7474/browser/

Neo4j Data Browser được sử dụng để thực hiện các lệnh CQL và xem kết quả đầu ra.

Ở đây, chúng ta cần thực hiện tất cả các lệnh CQL tại dấu nhắc đô la: "$"

Gõ lệnh sau ký hiệu đô la và nhấp vào nút "Thực thi" để chạy lệnh của bạn.

Nó tương tác với Máy chủ cơ sở dữ liệu Neo4j, truy xuất và hiển thị kết quả ngay bên dưới dấu nhắc đô la.

Sử dụng nút "VI View" để xem kết quả ở định dạng sơ đồ. Biểu đồ trên hiển thị kết quả ở định dạng "Giao diện người dùng".

Sử dụng nút "Chế độ xem lưới" để xem kết quả trong Chế độ xem lưới. Biểu đồ sau đây cho thấy kết quả tương tự ở định dạng "Chế độ xem lưới".

Khi chúng tôi sử dụng "Chế độ xem lưới" để xem kết quả Truy vấn, chúng tôi có thể xuất chúng thành một tệp ở hai định dạng khác nhau.

CSV

Nhấp vào nút "Xuất CSV" để xuất kết quả ở định dạng tệp csv.

JSON

Nhấp vào nút "Xuất JSON" để xuất kết quả ở định dạng tệp JSON.

Tuy nhiên, nếu chúng tôi sử dụng "Chế độ xem giao diện người dùng" để xem kết quả Truy vấn của mình, chúng tôi có thể xuất chúng thành tệp chỉ ở một định dạng: JSON

CQL là viết tắt của Cypher Query Language. Giống như Cơ sở dữ liệu Oracle có ngôn ngữ truy vấn SQL, Neo4j có CQL làm ngôn ngữ truy vấn.

Neo4j CQL

  • Là một ngôn ngữ truy vấn cho Cơ sở dữ liệu đồ thị Neo4j.
  • Là một ngôn ngữ so khớp mẫu khai báo.
  • Tuân theo cú pháp như SQL.
  • Cú pháp rất đơn giản và ở định dạng con người có thể đọc được.

Giống như Oracle SQL

  • Neo4j CQL có các lệnh để thực hiện các hoạt động Cơ sở dữ liệu.

  • Neo4j CQL hỗ trợ nhiều mệnh đề như WHERE, ORDER BY, v.v., để viết các truy vấn rất phức tạp một cách dễ dàng.

  • Neo4j CQL hỗ trợ một số chức năng như Chuỗi, Tổng hợp. Ngoài chúng, nó cũng hỗ trợ một số Chức năng Mối quan hệ.

Điều khoản CQL Neo4j

Sau đây là các điều khoản đã đọc của Neo4j Cypher Query Lđau khổ -

Sr.No Đọc điều khoản Sử dụng
1 TRẬN ĐẤU Mệnh đề này được sử dụng để tìm kiếm dữ liệu với một mẫu xác định.
2 TRẬN ĐẤU TÙY CHỌN Điều này cũng giống như đối sánh, sự khác biệt duy nhất là nó có thể sử dụng nulls trong trường hợp thiếu các phần của mẫu.
3 Ở ĐÂU Id mệnh đề này được sử dụng để thêm nội dung vào các truy vấn CQL.
4 KHỞI ĐẦU Điều khoản này được sử dụng để tìm điểm bắt đầu thông qua các chỉ mục kế thừa.
5 TẢI CSV Mệnh đề này được sử dụng để nhập dữ liệu từ tệp CSV.

Sau đây là các mệnh đề viết của Neo4j Cypher Query Lđau khổ -

Sr.No Viết mệnh đề Sử dụng
1 TẠO NÊN Mệnh đề này được sử dụng để tạo các nút, mối quan hệ và thuộc tính.
2 MERGE Mệnh đề này xác minh xem mẫu được chỉ định có tồn tại trong biểu đồ hay không. Nếu không, nó tạo ra mẫu.
3 BỘ Mệnh đề này được sử dụng để cập nhật nhãn trên các nút, thuộc tính trên các nút và các mối quan hệ.
4 XÓA BỎ Mệnh đề này được sử dụng để xóa các nút và mối quan hệ hoặc đường dẫn, v.v. khỏi biểu đồ.
5 TẨY Mệnh đề này được sử dụng để loại bỏ các thuộc tính và phần tử khỏi các nút và mối quan hệ.
6 CHO MỖI Lớp này được sử dụng để cập nhật dữ liệu trong danh sách.
7 TẠO ĐỘC ĐÁO Sử dụng mệnh đề CREATE và MATCH, bạn có thể có được một mẫu duy nhất bằng cách khớp với mẫu hiện có và tạo ra mẫu còn thiếu.
số 8 Nhập tệp CSV bằng Cypher Sử dụng Tải CSV, bạn có thể nhập dữ liệu từ các tệp .csv.

Sau đây là các điều khoản chung của Neo4j Cypher Query Lđau khổ -

Sr.No Điều khoản chung Sử dụng
1 TRỞ VỀ Mệnh đề này được sử dụng để xác định những gì cần đưa vào tập kết quả truy vấn.
2 ĐẶT BỞI Mệnh đề này được sử dụng để sắp xếp đầu ra của một truy vấn theo thứ tự. Nó được sử dụng cùng với các mệnh đềRETURN hoặc là WITH.
3 GIỚI HẠN Mệnh đề này được sử dụng để giới hạn các hàng trong kết quả ở một giá trị cụ thể.
4 NHẢY Mệnh đề này được sử dụng để xác định từ hàng nào sẽ bắt đầu bao gồm các hàng trong đầu ra.
5 VỚI Mệnh đề này được sử dụng để liên kết các phần truy vấn với nhau.
6 UNWIND Mệnh đề này được sử dụng để mở rộng danh sách thành một chuỗi các hàng.
7 LIÊN HIỆP Mệnh đề này được sử dụng để kết hợp kết quả của nhiều truy vấn.
số 8 GỌI Mệnh đề này được sử dụng để gọi một thủ tục được triển khai trong cơ sở dữ liệu.

Chức năng Neo4j CQL

Sau đây là các Chức năng Neo4j CQL thường được sử dụng:

Sr.No Chức năng CQL Sử dụng
1 Chuỗi Chúng được sử dụng để làm việc với các chuỗi ký tự.
2 Tổng hợp Chúng được sử dụng để thực hiện một số hoạt động tổng hợp trên kết quả Truy vấn CQL.
3 Mối quan hệ Chúng được sử dụng để lấy thông tin chi tiết về các mối quan hệ như startnode, endnode, v.v.

Chúng ta sẽ thảo luận chi tiết về tất cả các lệnh, mệnh đề và hàm Neo4j cú pháp, cách sử dụng và các ví dụ trong các chương tiếp theo.

Các loại dữ liệu CQL Neo4j

Các kiểu dữ liệu này tương tự như ngôn ngữ Java. Chúng được sử dụng để xác định các thuộc tính của một nút hoặc một mối quan hệ.

Neo4j CQL hỗ trợ các kiểu dữ liệu sau:

Sr.No Loại dữ liệu CQL Sử dụng
1 Boolean Nó được sử dụng để đại diện cho các ký tự Boolean: true, false.
2 byte Nó được sử dụng để biểu diễn số nguyên 8 bit.
3 ngắn Nó được sử dụng để biểu diễn số nguyên 16 bit.
4 int Nó được sử dụng để biểu diễn số nguyên 32 bit.
5 Dài Nó được sử dụng để biểu diễn số nguyên 64 bit.
6 Phao nổi Nó được sử dụng để biểu diễn số dấu phẩy động 32-bit.
7 gấp đôi Nó được sử dụng để biểu diễn số dấu phẩy động 64-bit.
số 8 char Nó được sử dụng để biểu diễn các ký tự 16-bit.
9 Chuỗi Nó được sử dụng để đại diện cho các Chuỗi.

Nhà điều hành CQL

Sau đây là danh sách các toán tử được hỗ trợ bởi ngôn ngữ truy vấn Neo4j Cypher.

Sr.No Kiểu Các nhà khai thác
1 Toán học +, -, *, /,%, ^
2 So sánh +, <>, <,>, <=,> =
3 Boolean VÀ, HOẶC, XOR, KHÔNG
4 Chuỗi +
5 Danh sách +, VÀO, [X], [X… ..Y]
6 Biểu hiện thông thường = -
7 Đối sánh chuỗi SAO CÓ, KẾT THÚC VỚI, CONSTRAINTS

Toán tử Boolean trong Neo4j CQL

Neo4j hỗ trợ các toán tử Boolean sau để sử dụng trong mệnh đề Neo4j CQL WHERE để hỗ trợ nhiều điều kiện.

Sr.No Toán tử Boolean Sự miêu tả
1 Nó là một từ khóa Neo4j CQL để hỗ trợ hoạt động AND. Nó giống như toán tử SQL AND.
2 HOẶC LÀ Nó là một từ khóa Neo4j CQL để hỗ trợ hoạt động OR. Nó giống như toán tử SQL AND.
3 KHÔNG PHẢI Nó là một từ khóa Neo4j CQL để hỗ trợ hoạt động KHÔNG. Nó giống như toán tử SQL AND.
4 XOR Nó là một từ khóa Neo4j CQL để hỗ trợ hoạt động XOR. Nó giống như toán tử SQL AND.

Các toán tử so sánh trong Neo4j CQL

Neo4j hỗ trợ các toán tử So sánh sau đây để sử dụng trong mệnh đề Neo4j CQL WHERE để hỗ trợ các điều kiện.

Sr.No Toán tử Boolean Sự miêu tả
1 = Nó là một toán tử Neo4j CQL "Equal To".
2 <> Nó là một toán tử Neo4j CQL "Không bằng".
3 < Nó là một toán tử Neo4j CQL "Ít hơn".
4 > Nó là một toán tử Neo4j CQL "Greater Than".
5 <= Nó là một toán tử Neo4j CQL "Nhỏ hơn hoặc Bằng".
6 > = Đây là toán tử Neo4j CQL "Lớn hơn hoặc bằng".

Như đã thảo luận, một nút là một dữ liệu / bản ghi trong cơ sở dữ liệu đồ thị. Bạn có thể tạo một nút trong Neo4j bằng cách sử dụngCREATEmệnh đề. Chương này hướng dẫn bạn cách -

  • Tạo một nút duy nhất
  • Tạo nhiều nút
  • Tạo một nút có nhãn
  • Tạo một nút có nhiều nhãn
  • Tạo một nút với các thuộc tính
  • Trả lại nút đã tạo

Tạo một nút đơn

Bạn có thể tạo một nút trong Neo4j bằng cách chỉ định tên của nút sẽ được tạo cùng với mệnh đề CREATE.

Cú pháp

Sau đây là cú pháp để tạo một nút bằng ngôn ngữ truy vấn Cypher.

CREATE (node_name);

Note - Dấu chấm phẩy (;) là tùy chọn.

Thí dụ

Sau đây là một mẫu Cypher Query tạo một nút trong Neo4j.

CREATE (sample)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1 - Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Mở trình duyệt của bạn, sao chép, dán URL sau vào thanh địa chỉ của bạn http://localhost:7474/. Điều này sẽ cung cấp cho bạn ứng dụng trình duyệt tích hợp của Neo4j với lời nhắc đô la như được hiển thị trong ảnh chụp màn hình sau.

Step 3 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Để xác minh việc tạo loại nút, hãy thực hiện truy vấn sau trong dấu nhắc đô la.

MATCH (n) RETURN n

Truy vấn này trả về tất cả các nút trong cơ sở dữ liệu (chúng ta sẽ thảo luận chi tiết về truy vấn này trong các chương tới).

Khi thực thi, truy vấn này hiển thị nút đã tạo như được hiển thị trong ảnh chụp màn hình sau.

Tạo nhiều nút

Mệnh đề tạo của Neo4j CQL cũng được sử dụng để tạo nhiều nút cùng một lúc. Để làm như vậy, bạn cần chuyển tên của các nút sẽ được tạo, phân tách bằng dấu phẩy.

Cú pháp

Sau đây là cú pháp để tạo nhiều nút bằng mệnh đề CREATE.

CREATE (node1),(node2)

Thí dụ

Sau đây là một mẫu Cypher Query tạo ra nhiều nút trong Neo4j.

CREATE (sample1),(sample2)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Để xác minh việc tạo nút, hãy nhập và thực hiện truy vấn sau trong dấu nhắc đô la.

MATCH (n) RETURN n

Truy vấn này trả về tất cả các nút trong cơ sở dữ liệu (chúng ta sẽ thảo luận chi tiết về truy vấn này trong các chương tới).

Khi thực thi, truy vấn này hiển thị nút đã tạo như được hiển thị trong ảnh chụp màn hình sau.

Tạo nút với nhãn

Một nhãn trong Neo4j được sử dụng để nhóm (phân loại) các nút bằng cách sử dụng nhãn. Bạn có thể tạo nhãn cho một nút trong Neo4j bằng mệnh đề CREATE.

Cú pháp

Sau đây là cú pháp để tạo một nút có nhãn bằng Ngôn ngữ truy vấn Cypher.

CREATE (node:label)

Thí dụ

Sau đây là một Truy vấn Cypher mẫu tạo một nút có nhãn.

CREATE (Dhawan:player)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Để xác minh việc tạo nút, hãy nhập và thực hiện truy vấn sau trong dấu nhắc đô la.

MATCH (n) RETURN n

Truy vấn này trả về tất cả các nút trong cơ sở dữ liệu (chúng ta sẽ thảo luận chi tiết về truy vấn này trong các chương tới).

Khi thực thi, truy vấn này hiển thị nút đã tạo như được hiển thị trong ảnh chụp màn hình sau.

Tạo một nút với nhiều nhãn

Bạn cũng có thể tạo nhiều nhãn cho một nút. Bạn cần chỉ định các nhãn cho nút bằng cách phân tách chúng bằng dấu hai chấm “:”.

Cú pháp

Sau đây là cú pháp để tạo một nút có nhiều nhãn.

CREATE (node:label1:label2:. . . . labeln)

Thí dụ

Sau đây là mẫu Cypher Query tạo một nút có nhiều nhãn trong Neo4j.

CREATE (Dhawan:person:player)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Để xác minh việc tạo nút, hãy nhập và thực hiện truy vấn sau trong dấu nhắc đô la.

MATCH (n) RETURN n

Truy vấn này trả về tất cả các nút trong cơ sở dữ liệu (chúng ta sẽ thảo luận chi tiết về truy vấn này trong các chương tới).

Khi thực thi, truy vấn này hiển thị nút đã tạo như được hiển thị trong ảnh chụp màn hình sau.

Tạo nút với thuộc tính

Thuộc tính là các cặp khóa-giá trị mà một nút sử dụng để lưu trữ dữ liệu. Bạn có thể tạo một nút với các thuộc tính bằng mệnh đề CREATE. Bạn cần chỉ định các thuộc tính này được phân tách bằng dấu phẩy trong dấu ngoặc nhọn “{}”.

Cú pháp

Sau đây là cú pháp để tạo một nút với các thuộc tính.

CREATE (node:label { key1: value, key2: value, . . . . . . . . .  })

Thí dụ

Sau đây là một mẫu Cypher Query tạo một nút với các thuộc tính.

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Để xác minh việc tạo nút, hãy nhập và thực hiện truy vấn sau trong dấu nhắc đô la.

MATCH (n) RETURN n

Truy vấn này trả về tất cả các nút trong cơ sở dữ liệu (chúng ta sẽ thảo luận chi tiết về truy vấn này trong các chương tới).

Khi thực thi, truy vấn này hiển thị nút đã tạo như được hiển thị trong ảnh chụp màn hình sau.

Trả lại nút đã tạo

Trong suốt chương, chúng tôi đã sử dụng MATCH (n) RETURN ntruy vấn để xem các nút đã tạo. Truy vấn này trả về tất cả các nút hiện có trong cơ sở dữ liệu.

Thay vì điều này, chúng ta có thể sử dụng mệnh đề RETURN với CREATE để xem nút mới được tạo.

Cú pháp

Sau đây là cú pháp để trả về một nút trong Neo4j.

CREATE (Node:Label{properties. . . . }) RETURN Node

Thí dụ

Sau đây là một mẫu Cypher Query tạo một nút với các thuộc tính và trả về nó.

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) RETURN Dhawan

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Trong Noe4j, một mối quan hệ là một phần tử mà chúng ta sử dụng để kết nối hai nút của một biểu đồ. Các mối quan hệ này có hướng, kiểu và các mẫu dữ liệu. Chương này hướng dẫn bạn cách -

  • Tạo mối quan hệ
  • Tạo mối quan hệ giữa các nút hiện có
  • Tạo mối quan hệ với nhãn và thuộc tính

Tạo mối quan hệ

Chúng ta có thể tạo mối quan hệ bằng mệnh đề CREATE. Chúng tôi sẽ chỉ định mối quan hệ trong dấu ngoặc vuông “[]” tùy thuộc vào hướng của mối quan hệ mà nó được đặt giữa dấu gạch nối “-” và mũi tên “→” như thể hiện trong cú pháp sau.

Cú pháp

Sau đây là cú pháp để tạo mối quan hệ bằng mệnh đề CREATE.

CREATE (node1)-[:RelationshipType]->(node2)

Thí dụ

Trước hết, tạo hai nút Ind và Dhawan trong cơ sở dữ liệu, như hình dưới đây.

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) 
CREATE (Ind:Country {name: "India"})

Bây giờ, hãy tạo một mối quan hệ có tên BATSMAN_OF giữa hai nút này là -

CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)

Cuối cùng, trả về cả hai nút để xem mối quan hệ đã tạo.

RETURN Dhawan, Ind

Sao chép và dán truy vấn mong muốn trong dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Tạo mối quan hệ giữa các nút hiện có

Bạn cũng có thể tạo mối quan hệ giữa các nút hiện có bằng cách sử dụng MATCH mệnh đề.

Cú pháp

Sau đây là cú pháp để tạo mối quan hệ bằng mệnh đề MATCH.

MATCH (a:LabeofNode1), (b:LabeofNode2) 
   WHERE a.name = "nameofnode1" AND b.name = " nameofnode2" 
CREATE (a)-[: Relation]->(b) 
RETURN a,b

Thí dụ

Sau đây là một mẫu Cypher Query tạo mối quan hệ bằng cách sử dụng mệnh đề so khớp.

MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India" 
CREATE (a)-[r: BATSMAN_OF]->(b) 
RETURN a,b

Để thực hiện truy vấn trên, hãy thực hiện các bước sau.

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Tạo mối quan hệ với nhãn và thuộc tính

Bạn có thể tạo mối quan hệ với nhãn và thuộc tính bằng mệnh đề CREATE.

Cú pháp

Sau đây là cú pháp để tạo mối quan hệ với nhãn và thuộc tính bằng mệnh đề CREATE.

CREATE (node1)-[label:Rel_Type {key1:value1, key2:value2, . . . n}]-> (node2)

Thí dụ

Sau đây là một mẫu Cypher Query tạo mối quan hệ với nhãn và thuộc tính.

MATCH (a:player), (b:Country) WHERE a.name = "Shikar Dhawan" AND b.name = "India" 
CREATE (a)-[r:BATSMAN_OF {Matches:5, Avg:90.75}]->(b)  
RETURN a,b

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Tạo một con đường hoàn chỉnh

Trong Neo4j, một đường dẫn được hình thành bằng cách sử dụng các mối quan hệ liên tục. Một đường dẫn có thể được tạo bằng mệnh đề create.

Cú pháp

Sau đây là cú pháp để tạo đường dẫn trong Neo4j bằng mệnh đề CREATE.

CREATE p = (Node1 {properties})-[:Relationship_Type]->
   (Node2 {properties})[:Relationship_Type]->(Node3 {properties}) 
RETURN p

Thí dụ

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Lệnh MERGE là sự kết hợp của lệnh CREATE và lệnh MATCH.

Lệnh Neo4j CQL MERGE tìm kiếm một mẫu nhất định trong biểu đồ. Nếu nó tồn tại, thì nó trả về kết quả.

Nếu nó KHÔNG tồn tại trong đồ thị, thì nó sẽ tạo một nút / mối quan hệ mới và trả về kết quả.

Trong chương này, bạn sẽ học cách -

  • Hợp nhất một nút với nhãn
  • Hợp nhất một nút với các thuộc tính
  • OnCreate và OnMatch
  • Hợp nhất một mối quan hệ

Cú pháp

Sau đây là cú pháp của lệnh MERGE.

MERGE (node: label {properties . . . . . . . })

Trước khi tiếp tục với các ví dụ trong phần này, hãy tạo hai nút trong cơ sở dữ liệu với nhãn Dhawan và Ind. Tạo mối quan hệ kiểu “BATSMAN_OF” từ Dhawan đến Ind như hình dưới đây.

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) 
CREATE (Ind:Country {name: "India"}) 
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)

Hợp nhất một nút với một nhãn

Bạn có thể hợp nhất một nút trong cơ sở dữ liệu dựa trên nhãn bằng mệnh đề MERGE. Nếu bạn cố gắng hợp nhất một nút dựa trên nhãn, thì Neo4j sẽ xác minh xem có tồn tại bất kỳ nút nào với nhãn đã cho hay không. Nếu không, nút hiện tại sẽ được tạo.

Cú pháp

Sau đây là cú pháp để hợp nhất một nút dựa trên một nhãn.

MERGE (node:label) RETURN node

ví dụ 1

Sau đây là một Cypher Query mẫu để hợp nhất một nút vào Neo4j (dựa trên nhãn). Khi bạn thực hiện truy vấn này, Neo4j xác minh xem có bất kỳ nút nào có nhãn khôngplayer. Nếu không, nó sẽ tạo một nút tên là “Jadeja” và trả về nó.

Nếu, tồn tại bất kỳ nút nào có nhãn đã cho, Neo4j trả về tất cả chúng.

MERGE (Jadeja:player) RETURN Jadeja

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Vì bạn đã tạo một nút có tên “Dhawan” với nhãn “player” trong cơ sở dữ liệu, Neo4j trả về nó như thể hiện trong ảnh chụp màn hình sau.

Ví dụ 2

Bây giờ, hãy thử hợp nhất một nút có tên “CT2013” ​​với một nhãn có tên là Giải đấu. Vì không có nút nào có nhãn này, Neo4j tạo một nút với tên đã cho và trả về nó.

MERGE (CT2013:Tournament{name: "ICC Champions Trophy 2013"}) 
RETURN CT2013, labels(CT2013)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và Khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Như đã thảo luận, vì không có nút nào có nhãn đã cho (Giải đấu). Neo4j tạo và trả về nút được chỉ định như thể hiện trong ảnh chụp màn hình sau.

Hợp nhất nút với thuộc tính

Bạn cũng có thể hợp nhất một nút với một tập hợp các thuộc tính. Nếu bạn làm như vậy, Neo4j sẽ tìm kiếm kết quả khớp ngang nhau cho nút được chỉ định, bao gồm các thuộc tính. Nếu nó không tìm thấy bất kỳ cái nào, nó sẽ tạo ra một cái.

Cú pháp

Sau đây là cú pháp để hợp nhất một nút bằng cách sử dụng các thuộc tính.

MERGE (node:label {key1:value, key2:value, key3:value . . . . . . . . })

Thí dụ

Sau đây là một Truy vấn Cypher mẫu để hợp nhất một nút bằng cách sử dụng các thuộc tính. Truy vấn này cố gắng hợp nhất nút có tên “jadeja” bằng cách sử dụng thuộc tính và nhãn. Vì không có nút nào như vậy với nhãn và thuộc tính chính xác, Neo4j tạo một nút.

MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) 
RETURN Jadeja

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và Khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Như đã thảo luận, vì không có nút nào có nhãn và thuộc tính được chỉ định, nó tạo ra một nút, như được hiển thị trong ảnh chụp màn hình sau.

OnCreate và OnMatch

Bất cứ khi nào, chúng tôi thực hiện một truy vấn hợp nhất, một nút được so khớp hoặc được tạo. Sử dụng khi tạo và khi khớp, bạn có thể đặt các thuộc tính cho biết liệu nút được tạo hay khớp.

Cú pháp

Sau đây là cú pháp của OnCreateOnMatch điều khoản.

MERGE (node:label {properties . . . . . . . . . . .}) 
ON CREATE SET property.isCreated ="true" 
ON MATCH SET property.isFound ="true"

Thí dụ

Sau đây là một Truy vấn Cypher mẫu trình bày việc sử dụng OnCreateOnMatchmệnh đề trong Neo4j. Nếu nút được chỉ định đã tồn tại trong cơ sở dữ liệu, thì nút đó sẽ được khớp và thuộc tính với cặp khóa-giá trị isFound = "true" sẽ được tạo trong nút.

Nếu nút được chỉ định không tồn tại trong cơ sở dữ liệu, thì nút sẽ được tạo và bên trong nó một thuộc tính có cặp khóa-giá trị isCreate = "true" sẽ được tạo.

MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) 
ON CREATE SET Jadeja.isCreated = "true" 
ON MATCH SET Jadeja.isFound = "true" 
RETURN Jadeja

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Như đã thảo luận, vì không có nút nào với các chi tiết được chỉ định, Neo4j đã tạo nó cùng với thuộc tínhisFound như thể hiện trong ảnh chụp màn hình sau.

Hợp nhất một mối quan hệ

Cũng giống như các nút, bạn cũng có thể hợp nhất các mối quan hệ bằng mệnh đề MERGE.

Thí dụ

Sau đây là một mẫu Cypher Query kết hợp một mối quan hệ bằng cách sử dụng mệnh đề MATCH trong Neo4j. Truy vấn này cố gắng hợp nhất một mối quan hệ có tênWINNERS_OF giữa các nút “ind” (nhãn: Quốc gia và tên: Ấn Độ) và ICC13 (nhãn: Giải đấu & tên: ICC Champions Trophy 2013).

Vì mối quan hệ như vậy không tồn tại, Neo4j tạo ra một mối quan hệ.

MATCH (a:Country), (b:Tournament) 
   WHERE a.name = "India" AND b.name = "ICC Champions Trophy 2013" 
   MERGE (a)-[r:WINNERS_OF]->(b) 
RETURN a, b

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Vì mối quan hệ được chỉ định không tồn tại trong cơ sở dữ liệu, Neo4j tạo một mối quan hệ như được hiển thị trong ảnh chụp màn hình sau.

Theo cách tương tự, bạn cũng có thể hợp nhất nhiều mối quan hệ và mối quan hệ vô hướng.

Sử dụng mệnh đề Đặt, bạn có thể thêm thuộc tính mới vào Nút hoặc Mối quan hệ hiện có, đồng thời thêm hoặc cập nhật các giá trị Thuộc tính hiện có.

Trong chương này, chúng ta sẽ thảo luận về cách -

  • Đặt thuộc tính
  • Xóa một thuộc tính
  • Đặt nhiều thuộc tính
  • Đặt nhãn trên một nút
  • Đặt nhiều nhãn trên một nút

Đặt thuộc tính

Sử dụng mệnh đề SET, bạn có thể tạo một thuộc tính mới trong một nút.

Cú pháp

Sau đây là cú pháp để thiết lập một thuộc tính.

MATCH (node:label{properties . . . . . . . . . . . . . . }) 
SET node.property = value 
RETURN node

Thí dụ

Trước khi tiếp tục với ví dụ, đầu tiên hãy tạo một nút có tên là Dhawan như hình dưới đây.

CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"})

Sau đây là một Cypher Query mẫu để tạo một thuộc tính có tên là “highestscore” với giá trị “187” .

MATCH (Dhawan:player{name: "shikar Dhawan", YOB: 1985, POB: "Delhi"}) 
SET Dhawan.highestscore = 187 
RETURN Dhawan

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây, bạn có thể quan sát thấy một thuộc tính có điểm số cao của cặp khóa-giá trị / 187 được tạo trong nút có tên “Dhawan”.

Xóa thuộc tính

Bạn có thể xóa thuộc tính hiện có bằng cách chuyển NULL như giá trị của nó.

Cú pháp

Sau đây là cú pháp xóa một thuộc tính khỏi một nút bằng mệnh đề SET.

MATCH (node:label {properties}) 
SET node.property = NULL 
RETURN node

Thí dụ

Trước khi tiếp tục với ví dụ, đầu tiên hãy tạo một nút “jadeja” như hình dưới đây.

Create (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})

Sau đây là một Cypher Query mẫu loại bỏ thuộc tính có tên POB khỏi nút này bằng cách sử dụng mệnh đề SET như được hiển thị bên dưới.

MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) 
SET Jadeja.POB = NULL 
RETURN Jadeja

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể thấy rằng biến có tênPOB đã bị xóa.

Đặt nhiều thuộc tính

Theo cách tương tự, bạn có thể tạo nhiều thuộc tính trong một nút bằng mệnh đề Đặt. Để làm như vậy, bạn cần chỉ định các cặp giá trị khóa này bằng dấu phẩy.

Cú pháp

Sau đây là cú pháp để tạo nhiều thuộc tính trong một nút bằng mệnh đề SET.

MATCH (node:label {properties}) 
SET node.property1 = value, node.property2 = value 
RETURN node

Thí dụ

Sau đây là một mẫu Cypher Query tạo ra nhiều thuộc tính trong một nút bằng cách sử dụng mệnh đề SET trong Neo4j.

MATCH (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988})  
SET Jadeja.POB: "NavagamGhed", Jadeja.HS = "90" 
RETURN Jadeja

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể thấy rằng các thuộc tính có tên POB và HS đã được tạo.

Đặt nhãn trên nút

Bạn có thể đặt nhãn cho một nút hiện có bằng mệnh đề SET.

Cú pháp

Sau đây là cú pháp để đặt nhãn cho một nút hiện có.

MATCH (n {properties . . . . . . . }) 
SET n :label 
RETURN n

Thí dụ

Trước khi tiếp tục với ví dụ, đầu tiên hãy tạo một nút “Anderson” như hình dưới đây.

CREATE (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"})

Sau đây là một Truy vấn Cypher mẫu để đặt nhãn trên một nút bằng mệnh đề SET. Truy vấn này thêm nhãn “player” vào nút Anderson và trả về nó.

MATCH (Anderson {name: "James Anderson", YOB: 1982, POB: "Burnely"}) 
SET Anderson: player 
RETURN Anderson

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể thấy rằng nhãn có tên "player" được thêm vào nút.

Đặt nhiều nhãn trên một nút

Bạn có thể đặt nhiều nhãn cho một nút hiện có bằng mệnh đề SET. Ở đây bạn cần xác định các nhãn bằng cách phân tách chúng bằng dấu hai chấm “:”.

Cú pháp

Sau đây là cú pháp để đặt nhiều nhãn cho một nút hiện có bằng mệnh đề SET.

MATCH (n {properties . . . . . . . }) 
SET n :label1:label2 
RETURN n

Thí dụ

Trước khi tiếp tục với ví dụ, đầu tiên hãy tạo một nút có tên “Ishant” như hình dưới đây.

CREATE (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})

Sau đây là một Truy vấn Cypher mẫu được sử dụng để tạo nhiều nhãn trên một nút bằng mệnh đề SET.

MATCH (Ishant {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"}) 
SET Ishant: player:person 
RETURN Ishant

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây, bạn có thể quan sát thấy hai nhãn - người và trình phát - được thêm vào nút có tênIshant.

Bạn có thể xóa các nút và mối quan hệ khỏi cơ sở dữ liệu bằng mệnh đề DELETE.

Xóa tất cả các nút và mối quan hệ

Sau đây là truy vấn để xóa tất cả các nút và các mối quan hệ trong cơ sở dữ liệu bằng mệnh đề DELETE.

Truy vấn

MATCH (n) DETACH DELETE n

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Thao tác này sẽ xóa tất cả các nút và mối quan hệ khỏi cơ sở dữ liệu neo4j của bạn và làm cho nó trống.

Xóa một nút cụ thể

Để xóa một nút cụ thể, bạn cần chỉ định chi tiết của nút ở vị trí của “n” trong truy vấn trên.

Cú pháp

Sau đây là cú pháp để xóa một nút cụ thể khỏi Neo4j bằng mệnh đề DELETE.

MATCH (node:label {properties . . . . . . . . . .  }) 
DETACH DELETE node

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo một nút “Ishant” trong cơ sở dữ liệu Neo4j như hình dưới đây.

CREATE (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})

Sau đây là một mẫu Cypher Query xóa nút đã tạo ở trên bằng mệnh đề DELETE.

MATCH (Ishant:player {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"}) 
DETACH DELETE Ishant

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể thấy rằng nút được chỉ định đã bị xóa.

Mệnh đề REMOVE được sử dụng để loại bỏ các thuộc tính và nhãn khỏi các phần tử đồ thị (Nút hoặc Mối quan hệ).

Sự khác biệt chính giữa lệnh Neo4j CQL DELETE và REMOVE là -

  • Thao tác DELETE được sử dụng để xóa các nút và các mối quan hệ liên kết.
  • Thao tác REMOVE được sử dụng để loại bỏ các nhãn và thuộc tính.

Xóa thuộc tính

Bạn có thể loại bỏ một thuộc tính của một nút bằng MATCH cùng với mệnh đề LOẠI BỎ.

Cú pháp

Sau đây là cú pháp để loại bỏ một thuộc tính của một nút bằng mệnh đề REMOVE.

MATCH (node:label{properties . . . . . . . }) 
REMOVE node.property 
RETURN node

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo một nút có tên Dhoni như hình bên dưới.

CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"})

Sau đây là một Cypher Query mẫu để loại bỏ nút đã tạo ở trên bằng cách sử dụng mệnh đề REMOVE.

MATCH (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
REMOVE Dhoni.POB 
RETURN Dhoni

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Tại đây, bạn có thể thấy rằng nút có tên POB đã bị xóa.

Xóa nhãn khỏi nút

Tương tự với thuộc tính, bạn cũng có thể xóa nhãn khỏi nút hiện có bằng mệnh đề remove.

Cú pháp

Sau đây là cú pháp để loại bỏ một nhãn khỏi một nút.

MATCH (node:label {properties . . . . . . . . . . . }) 
REMOVE node:label 
RETURN node

Thí dụ

Sau đây là một Truy vấn Cypher mẫu để xóa nhãn khỏi một nút hiện có bằng cách sử dụng mệnh đề remove.

MATCH (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
REMOVE Dhoni:player 
RETURN Dhoni

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Tại đây, bạn có thể thấy rằng nhãn đã bị xóa khỏi nút.

Xóa nhiều nhãn

Bạn cũng có thể xóa nhiều nhãn khỏi một nút hiện có.

Cú pháp

Sau đây là cú pháp để loại bỏ nhiều nhãn khỏi một nút.

MATCH (node:label1:label2 {properties . . . . . . . . }) 
REMOVE node:label1:label2 
RETURN node

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo một nút Ishant như hình dưới đây.

CREATE (Ishant:player:person {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"})

Sau đây là một Truy vấn Cypher mẫu để xóa nhiều nhãn khỏi một nút.

MATCH (Ishant:player:person {name: "Ishant Sharma", YOB: 1988, POB: "Delhi"}) 
REMOVE Ishant:player:person 
RETURN Ishant

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Tại đây, bạn có thể thấy rằng các nhãn được chỉ định đã bị xóa khỏi nút.

Các FOREACH mệnh đề được sử dụng để cập nhật dữ liệu trong danh sách cho dù các thành phần của một đường dẫn, hay kết quả của tổng hợp.

Cú pháp

Sau đây là cú pháp của mệnh đề FOREACH.

MATCH p = (start node)-[*]->(end node) 
WHERE start.node = "node_name" AND end.node = "node_name" 
FOREACH (n IN nodes(p)| SET n.marked = TRUE)

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo một đường dẫn p trong cơ sở dữ liệu Neo4j như hình dưới đây.

CREATE p = (Dhawan {name:"Shikar Dhawan"})-[:TOPSCORRER_OF]->(Ind{name: 
   "India"})-[:WINNER_OF]->(CT2013{name: "Champions Trophy 2013"}) 
RETURN p

Sau đây là một Truy vấn Cypher mẫu thêm một thuộc tính cho tất cả các nút dọc theo đường dẫn bằng cách sử dụng mệnh đề FOREACH.

MATCH p = (Dhawan)-[*]->(CT2013) 
   WHERE Dhawan.name = "Shikar Dhawan" AND CT2013.name = "Champions Trophy 2013" 
FOREACH (n IN nodes(p)| SET n.marked = TRUE)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Để xác minh việc tạo nút, hãy nhập và thực hiện truy vấn sau trong dấu nhắc đô la.

MATCH (n) RETURN n

Truy vấn này trả về tất cả các nút trong cơ sở dữ liệu (chúng ta sẽ thảo luận chi tiết về truy vấn này trong các chương tới).

Khi thực thi, truy vấn này hiển thị nút đã tạo như được hiển thị trong ảnh chụp màn hình sau.

Trong chương này, chúng ta sẽ tìm hiểu về Mệnh đề đối sánh và tất cả các hàm có thể được thực hiện bằng mệnh đề này.

Nhận tất cả các nút bằng cách sử dụng khớp

Sử dụng mệnh đề MATCH của Neo4j, bạn có thể truy xuất tất cả các nút trong cơ sở dữ liệu Neo4j.

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo 3 nút và 2 mối quan hệ như hình dưới đây.

CREATE (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
CREATE (Ind:Country {name: "India", result: "Winners"}) 
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) 
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013) 

CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)  
CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"}) 
CREATE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})  

CREATE (Dhawan)-[:TOP_SCORER_OF {Runs:363}]->(Ind) 
CREATE (Jadeja)-[:HIGHEST_WICKET_TAKER_OF {Wickets:12}]->(Ind)

Sau đây là truy vấn trả về tất cả các nút trong cơ sở dữ liệu Neo4j.

MATCH (n) RETURN n

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Lấy tất cả các nút dưới một nhãn cụ thể

Sử dụng mệnh đề đối sánh, bạn có thể lấy tất cả các nút dưới một nhãn cụ thể.

Cú pháp

Sau đây là cú pháp để lấy tất cả các nút dưới một nhãn cụ thể.

MATCH (node:label) 
RETURN node

Thí dụ

Sau đây là một truy vấn Cypher mẫu, trả về tất cả các nút trong cơ sở dữ liệu dưới nhãn player.

MATCH (n:player) 
RETURN n

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Đối sánh theo mối quan hệ

Bạn có thể truy xuất các nút dựa trên mối quan hệ bằng cách sử dụng mệnh đề MATCH.

Cú pháp

Sau đây là cú pháp truy xuất các nút dựa trên mối quan hệ bằng cách sử dụng mệnh đề MATCH.

MATCH (node:label)<-[: Relationship]-(n) 
RETURN n

Thí dụ

Sau đây là một Truy vấn Cypher mẫu để truy xuất các nút dựa trên mối quan hệ bằng cách sử dụng mệnh đề MATCH.

MATCH (Ind:Country {name: "India", result: "Winners"})<-[: TOP_SCORER_OF]-(n) 
RETURN n.name

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Xóa tất cả các nút

Bạn có thể xóa tất cả các nút bằng mệnh đề MATCH.

Truy vấn

Sau đây là truy vấn để xóa tất cả các nút trong Neo4j.

MATCH (n) detach delete n

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Các OPTIONAL MATCH mệnh đề được sử dụng để tìm kiếm mẫu được mô tả trong đó, trong khi sử dụng nulls cho các phần bị thiếu của mẫu.

OPTIONAL MATCH tương tự như mệnh đề so khớp, điểm khác biệt duy nhất là nó trả về null do thiếu các phần của mẫu.

Cú pháp

Sau đây là cú pháp của TRẬN ĐẤU TÙY CHỌN với mối quan hệ.

MATCH (node:label {properties. . . . . . . . . . . . . .}) 
OPTIONAL MATCH (node)-->(x) 
RETURN x

Thí dụ

Sau đây là một mẫu Cypher Query cố gắng truy xuất các quan hệ từ nút ICCT2013. Vì không có nút nào như vậy, nó trả về null.

MATCH (a:Tornament {name: "ICC Champions Trophy 2013"}) 
OPTIONAL MATCH (a)-->(x) 
RETURN x

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể thấy rằng vì không có kết quả phù hợp nào cho mẫu bắt buộc, Neo4j trả về null.

Giống như SQL, Neo4j CQL đã cung cấp mệnh đề WHERE trong lệnh CQL MATCH để lọc kết quả của Truy vấn MATCH.

Cú pháp

Sau đây là cú pháp của mệnh đề WHERE.

MATCH (label)  
WHERE label.country = "property" 
RETURN label

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo năm nút trong cơ sở dữ liệu như hình dưới đây.

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"}
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"}
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, 
   country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})
CREATE(Ind:Country {name: "India", result: "Winners"})

Sau đây là một mẫu Cypher Query trả về tất cả các trình phát (nút) thuộc quốc gia Ấn Độ bằng cách sử dụng mệnh đề WHERE.

MATCH (player)  
WHERE player.country = "India" 
RETURN player

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Mệnh đề WHERE với nhiều điều kiện

Bạn cũng có thể sử dụng mệnh đề WHERE để xác minh nhiều điều kiện.

Cú pháp

Sau đây là cú pháp để sử dụng mệnh đề WHERE trong Neo4j với nhiều điều kiện.

MATCH (emp:Employee)  
WHERE emp.name = 'Abc' AND emp.name = 'Xyz' 
RETURN emp

Thí dụ

Sau đây là một Truy vấn Cypher mẫu lọc các nút trong cơ sở dữ liệu Neo4j bằng cách sử dụng hai điều kiện.

MATCH (player)  
WHERE player.country = "India" AND player.runs >=175 
RETURN player

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Sử dụng Mối quan hệ với Mệnh đề Where

Bạn cũng có thể sử dụng mệnh đề Where để lọc các nút bằng cách sử dụng các mối quan hệ.

Thí dụ

Giả sử chúng ta có đồ thị sau trong cơ sở dữ liệu.

Sau đây là một Cypher Query mẫu để truy xuất vua phá lưới của Ấn Độ bằng mệnh đề WHERE như hình dưới đây.

MATCH (n) 
WHERE (n)-[: TOP_SCORER_OF]->( {name: "India", result: "Winners"}) 
RETURN n

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể quan sát thấy Neo4j đã trả lại nút có mối quan hệ TOP_SCORER_OF với quốc gia có nút có tên India.

Giả sử chúng ta đã tạo một biểu đồ trong cơ sở dữ liệu với các chi tiết sau.

Đếm

Các count() hàm được sử dụng để đếm số hàng.

Cú pháp

Sau đây là cú pháp của hàm đếm.

MATCH (n { name: 'A' })-->(x) 
RETURN n, count(*)

Thí dụ

Sau đây là một mẫu Truy vấn Cypher thể hiện việc sử dụng count() chức năng.

Match(n{name: "India", result: "Winners"})--(x)  
RETURN n, count(*)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Số nhóm

Các COUNT mệnh đề cũng được sử dụng để đếm các nhóm kiểu quan hệ.

Thí dụ

Sau đây là một mẫu Cypher Query đếm và trả về số lượng các nút tham gia vào mỗi quan hệ.

Match(n{name: "India", result: "Winners"})-[r]-(x)  
RETURN type (r), count(*)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Mệnh đề RETURN được sử dụng để trả về các nút, mối quan hệ và thuộc tính trong Neo4j. Trong chương này, chúng ta sẽ học cách -

  • Các nút trả lại
  • Trả lại nhiều nút
  • Trả lại các mối quan hệ
  • Trả lại tài sản
  • Trả lại tất cả các phần tử
  • Trả về một biến có bí danh cột

Các nút trả về

Bạn có thể trả về một nút bằng mệnh đề RETURN.

Cú pháp

Sau đây là cú pháp để trả về các nút bằng mệnh đề RETURN.

Create (node:label {properties}) 
RETURN node

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo 3 nút và 2 mối quan hệ như hình dưới đây.

Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
CREATE (Ind:Country {name: "India", result: "Winners"}) 
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) 
CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013) 
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind)

Sau đây là một mẫu Cypher Query tạo một nút tên là Dhoni và trả về nó.

Create (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
RETURN Dhoni

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Trả lại nhiều nút

Bạn cũng có thể trả về nhiều nút bằng mệnh đề trả về.

Cú pháp

Sau đây là cú pháp để trả về nhiều nút bằng mệnh đề return.

CREATE (Ind:Country {name: "India", result: "Winners"}) 
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) 
RETURN Ind, CT2013

Thí dụ

Sau đây là một Cypher Query mẫu để trả về nhiều nút bằng mệnh đề return.

CREATE (Ind:Country {name: "India", result: "Winners"}) 
CREATE (CT2013:Tornament {name: "ICC Champions Trophy 2013"}) 
RETURN Ind, CT2013

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau. Ở đây bạn có thể quan sát thấy Neo4j trả về 2 nút.

Mối quan hệ trở lại

Bạn cũng có thể trả về các mối quan hệ bằng mệnh đề Return.

Cú pháp

Sau đây là cú pháp để trả về các mối quan hệ bằng mệnh đề RETURN.

CREATE (node1)-[Relationship:Relationship_type]->(node2) 
RETURN Relationship

Thí dụ

Sau đây là một mẫu Cypher Query tạo ra hai mối quan hệ và trả về chúng.

CREATE (Ind)-[r1:WINNERS_OF {NRR:0.938 ,pts:6}]->(CT2013) 
CREATE(Dhoni)-[r2:CAPTAIN_OF]->(Ind) 
RETURN r1, r2

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Trả lại thuộc tính

Bạn cũng có thể trả về thuộc tính bằng mệnh đề RETURN.

Cú pháp

Sau đây là cú pháp để trả về thuộc tính bằng mệnh đề RETURN.

Match (node:label {properties . . . . . . . . . . }) 
Return node.property

Thí dụ

Sau đây là một Cypher Query mẫu để trả về các thuộc tính của một nút.

Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
Return Dhoni.name, Dhoni.POB

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Trả lại tất cả các phần tử

Bạn có thể trả về tất cả các phần tử trong cơ sở dữ liệu Neo4j bằng mệnh đề RETURN.

Thí dụ

Sau đây là một ví dụ Cypher Query để trả về tất cả các phần tử trong cơ sở dữ liệu.

Match p = (n {name: "India", result: "Winners"})-[r]-(x)  
RETURN *

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Trả về một biến với bí danh cột

Bạn có thể trả về một cột cụ thể với bí danh bằng mệnh đề RETURN trong Neo4j.

Thí dụ

Sau đây là một mẫu Truy vấn Cypher trả về cột POB là Nơi sinh.

Match (Dhoni:player {name: "MahendraSingh Dhoni", YOB: 1981, POB: "Ranchi"}) 
Return Dhoni.POB as Place Of Birth

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Bạn có thể sắp xếp dữ liệu kết quả theo thứ tự bằng mệnh đề ORDER BY.

Cú pháp

Sau đây là cú pháp của mệnh đề ORDER BY.

MATCH (n)  
RETURN n.property1, n.property2 . . . . . . . .  
ORDER BY n.property

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo 5 nút trong cơ sở dữ liệu Neo4j như hình dưới đây.

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})

Sau đây là một Cypher Query mẫu trả về các nút đã tạo ở trên theo thứ tự các lần chạy được ghi bởi người chơi bằng cách sử dụng mệnh đề ORDERBY.

MATCH (n)  
RETURN n.name, n.runs 
ORDER BY n.runs

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Sắp xếp các nút theo nhiều thuộc tính

Bạn có thể sắp xếp các nút dựa trên nhiều thuộc tính bằng cách sử dụng ORDEYBY mệnh đề.

Cú pháp

Sau đây là cú pháp để sắp xếp các nút theo nhiều thuộc tính bằng cách sử dụng mệnh đề ORDERBY.

MATCH (n) 
RETURN n 
ORDER BY n.age, n.name

Thí dụ

Sau đây là một mẫu Cypher Query sắp xếp các nút được tạo trước đó trong chương này dựa trên các thuộc tính - run và quốc gia.

MATCH (n) 
RETURN n.name, n.runs, n.country 
ORDER BY n.runs, n.country

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Sắp xếp các nút theo thứ tự giảm dần

Bạn có thể sắp xếp các nút trong cơ sở dữ liệu theo thứ tự giảm dần bằng cách sử dụng ORDERBY mệnh đề.

Cú pháp

Sau đây là cú pháp để sắp xếp các nút trong cơ sở dữ liệu.

MATCH (n) 
RETURN n 
ORDER BY n.name DESC

Thí dụ

Sau đây là một mẫu Cypher Query sắp xếp các nút trong cơ sở dữ liệu theo thứ tự giảm dần bằng mệnh đề ORDERBY.

MATCH (n)  
RETURN n.name, n.runs 
ORDER BY n.runs DESC

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Các limit mệnh đề được sử dụng để giới hạn số hàng trong đầu ra.

Cú pháp

Sau đây là cú pháp của mệnh đề LIMIT.

MATCH (n) 
RETURN n 
ORDER BY n.name 
LIMIT 3

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo 5 nút trong cơ sở dữ liệu Neo4j như hình dưới đây.

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})

Sau đây là một mẫu Cypher Query trả về các nút được tạo ở trên theo thứ tự giảm dần và giới hạn các bản ghi trong kết quả là 3.

MATCH (n)  
RETURN n.name, n.runs 
ORDER BY n.runs DESC 
LIMIT 3

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Giới hạn với biểu thức

Bạn cũng có thể sử dụng mệnh đề LIMIT với biểu thức.

Thí dụ

Sau đây là một mẫu Truy vấn Cypher giới hạn các bản ghi sử dụng một biểu thức.

MATCH (n) 
RETURN n.name, n.runs 
ORDER BY n.runs DESC 
LIMIT toInt(3 * rand())+ 1

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Mệnh đề SKIP được sử dụng để xác định từ hàng nào sẽ bắt đầu bao gồm các hàng trong đầu ra.

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo 5 nút như hình dưới đây.

CREATE(Dhawan:player{name:"shikar Dhawan", YOB: 1985, runs:363, country: "India"})
CREATE(Jonathan:player{name:"Jonathan Trott", YOB:1981, runs:229, country:"South Africa"})
CREATE(Sangakkara:player{name:"Kumar Sangakkara", YOB:1977, runs:222, country:"Srilanka"})
CREATE(Rohit:player{name:"Rohit Sharma", YOB: 1987, runs:177, country:"India"})
CREATE(Virat:player{name:"Virat Kohli", YOB: 1988, runs:176, country:"India"})

Sau đây là một mẫu Cypher Query trả về tất cả các nút trong cơ sở dữ liệu bỏ qua 3 nút đầu tiên.

MATCH (n)  
RETURN n.name, n.runs 
ORDER BY n.runs DESC 
SKIP 3

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Bỏ qua Sử dụng Biểu thức

Bạn có thể bỏ qua các bản ghi của một kết quả bằng cách sử dụng một biểu thức.

Thí dụ

Sau đây là một Truy vấn Cypher mẫu sử dụng mệnh đề SKIP với một biểu thức.

MATCH (n)  
RETURN n.name, n.runs 
ORDER BY n.runs DESC 
SKIP toInt (2*rand())+ 1

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Bạn có thể xâu chuỗi các thuật truy vấn với nhau bằng mệnh đề WITH.

Cú pháp

Sau đây là cú pháp của mệnh đề WITH.

MATCH (n) 
WITH n 
ORDER BY n.property 
RETURN collect(n.property)

Thí dụ

Sau đây là một mẫu Cypher Query trình bày cách sử dụng mệnh đề WITH.

MATCH (n) 
WITH n 
ORDER BY n.name DESC LIMIT 3 
RETURN collect(n.name)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Mệnh đề unwind được sử dụng để rút một danh sách thành một chuỗi các hàng.

Thí dụ

Sau đây là một Cypher Query mẫu để giải nén một danh sách.

UNWIND [a, b, c, d] AS x 
RETURN x

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Giống như SQL, Neo4J CQL đã cung cấp một tập hợp các hàm Chuỗi để sử dụng chúng trong các Truy vấn CQL để nhận được kết quả cần thiết.

Ở đây, chúng ta sẽ thảo luận về một số hàm quan trọng và được sử dụng thường xuyên.

Danh sách hàm chuỗi

Sau đây là danh sách các hàm String nổi bật trong Neo4j.

Sr.No Mô tả chức năng
1 PHÍA TRÊN

Nó được sử dụng để thay đổi tất cả các chữ cái thành chữ hoa.

2 THẤP HƠN

Nó được sử dụng để thay đổi tất cả các chữ cái thành chữ thường.

3 ĐĂNG KÝ

Nó được sử dụng để lấy chuỗi con của một Chuỗi nhất định.

4 Replace

Nó được sử dụng để thay thế một chuỗi con bằng một chuỗi con nhất định của một Chuỗi.

Giống như SQL, Neo4j CQL đã cung cấp một số hàm tổng hợp để sử dụng trong mệnh đề RETURN. Nó tương tự như mệnh đề GROUP BY trong SQL.

Chúng ta có thể sử dụng lệnh RETURN + Aggregation Functions này trong lệnh MATCH để làm việc trên một nhóm các nút và trả về một số giá trị tổng hợp.

AGGREGATION Danh sách chức năng

Sau đây là danh sách các hàm tổng hợp trong Neo4j.

Sr.No Mô tả chức năng
1 ĐẾM

Nó trả về số hàng được trả về bởi lệnh MATCH.

2 TỐI ĐA

Nó trả về giá trị lớn nhất từ ​​một tập hợp các hàng được trả về bởi lệnh MATCH.

3 MIN

Nó trả về giá trị nhỏ nhất từ ​​một tập hợp các hàng được trả về bởi lệnh MATCH.

4 TỔNG

Nó trả về giá trị tổng của tất cả các hàng được trả về bởi lệnh MATCH.

5 AVG

Nó trả về giá trị trung bình của tất cả các hàng được trả về bởi lệnh MATCH.

Trong các ứng dụng thời gian thực, chúng ta nên sao lưu cơ sở dữ liệu ứng dụng của mình thường xuyên để có thể khôi phục lại trạng thái hoạt động tại bất kỳ điểm hỏng nào.

Quy tắc này có thể áp dụng cho cả cơ sở dữ liệu RDBMS và NoSQL.

Trong phần này, chúng ta sẽ thảo luận về hai nhiệm vụ DBA quan trọng.

  • Cách sao lưu Cơ sở dữ liệu Neo4j.
  • Cách khôi phục Cơ sở dữ liệu Neo4j thành một bản sao lưu cụ thể.

Note- Các bước này chỉ áp dụng cho Hệ điều hành Windows. Chúng ta nên sử dụng các loại lệnh tương tự để thực hiện các bước tương tự trong các hệ điều hành khác.

Sao lưu cơ sở dữ liệu Neo4j

Step 1 - Nhấp vào "Cộng đồng Neo4j" bằng đường dẫn sau -

Nút "Bắt đầu" của Windows → "Tất cả chương trình" → "Cộng đồng Neo4j" → "Cộng đồng Neo4j"

Theo mặc định, nó chọn c:\Users\[username]\Documents\Neo4j\default.graphdb. Tuy nhiên, nếu muốn, chúng ta có thể thay đổi đường dẫn đến một thư mục khác.

Step 2 - Ở đây chúng tôi đã thay đổi thành thư mục Cơ sở dữ liệu Neo4j của chúng tôi.

C: \ Ne04j2.0db

Step 3 - Nhấp vào nút "Bắt đầu".

Khi máy chủ khởi động, chúng tôi có thể quan sát thấy các tệp Cơ sở dữ liệu Neo4j của chúng tôi được tạo tại một thư mục cụ thể.

Trước khi sao lưu cơ sở dữ liệu, điều đầu tiên và quan trọng nhất chúng ta nên làm là tắt máy chủ Cơ sở dữ liệu Neo4j.

Step 4 - Nhấp vào nút "Dừng" để tắt máy chủ.

Tệp cơ sở dữ liệu Neo4j có sẵn tại C: \ Ne04j2.0db

Step 5 - Mở dấu nhắc lệnh.

Step 6 - Tạo thư mục "Neo4jDbBackup-01" tại C: \ Neo4j (Đây có thể là vị trí bất kỳ trong hệ thống tệp của bạn).

mkdir C:\Neo4j\Neo4jDbBackup-01

Nó tạo một thư mục mới "Neo4jDbBackup-01" tại vị trí hệ thống tệp được chỉ định "C: \ Neo4j \"

Step 7 - Gõ lệnh sau và nhấn phím Enter.

copy C:\Ne04j2.0db C:\Neo4j\Neo4jDbBackup-01

Điều này có nghĩa là các tệp của chúng tôi được sao chép vào thư mục đích cần thiết. Truy cập thư mục đó và quan sát rằng thư mục có các tệp cơ sở dữ liệu của chúng tôi.

Step 8 - Sử dụng bất kỳ công cụ nén / giải nén Windows nào như WinZip, 7 Zip hoặc WinRAR để nén thư mục Cơ sở dữ liệu của chúng tôi.

Step 9- Bây giờ tệp Neo4jDbBackup-01.zip của chúng tôi đã được tạo. Nếu bạn có bất kỳ ràng buộc nào về bộ nhớ trong hệ thống tệp của mình, hãy xóa thư mục "Neo4jDbBackup-01" tại "C: \ Neo4j \"

Khôi phục cơ sở dữ liệu Neo4j

Step 1- Tắt máy chủ cơ sở dữ liệu. Vui lòng tham khảo các bước trước để tắt máy chủ.

Step 2 - Làm trống thư mục cơ sở dữ liệu hiện tại.

Step 3 - Sử dụng bất kỳ công cụ nén / giải nén Windows nào như WinZip, 7 Zip hoặc WinRar để giải nén thư mục sao lưu của chúng tôi.

Step 4 - Mở dấu nhắc lệnh và thực hiện lệnh sau.

Copy C:\Neo4j\Neo4jDbBackup-01 C:\Ne04j2.0db

Bây giờ chúng ta có thể quan sát rằng thư mục cơ sở dữ liệu của chúng ta chứa các tệp sao lưu đang hoạt động

Step 5 - Khởi động máy chủ bằng cách nhấp vào nút "Bắt đầu".

Step 6 - Thực hiện một số lệnh MATCH + RETURN để xác minh xem chúng tôi đã khôi phục cơ sở dữ liệu của mình đúng cách hay chưa.

Neo4j SQL hỗ trợ Chỉ mục trên thuộc tính nút hoặc mối quan hệ để cải thiện hiệu suất của ứng dụng. Chúng ta có thể tạo chỉ mục trên thuộc tính cho tất cả các nút có cùng tên nhãn.

Chúng ta có thể sử dụng các cột được lập chỉ mục này trên toán tử MATCH hoặc WHERE hoặc IN để cải thiện việc thực thi lệnh CQL.

Trong chương này, chúng ta sẽ thảo luận về cách -

  • Tạo chỉ mục
  • Xóa chỉ mục

Tạo chỉ mục

Neo4j CQL cung cấp lệnh "CREATE INDEX" để tạo chỉ mục trên thuộc tính Node hoặc Relationship.

Cú pháp

Sau đây là cú pháp để tạo một chỉ mục trong Neo4j.

CREATE INDEX ON:label (node)

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo một nút Dhawan như hình dưới đây.

CREATE (Dhawan:player{name: "shikar Dhawan", YOB: 1995, POB: "Delhi"})

Sau đây là một Cypher Query mẫu để tạo một chỉ mục trên nút Dhawan trong Neo4j.

CREATE INDEX ON:player(Dhawan)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như hình bên dưới.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Xóa chỉ mục

Neo4j CQL cung cấp lệnh "DROP INDEX" để loại bỏ chỉ mục hiện có của thuộc tính Node hoặc Relationshis.

Cú pháp

Sau đây là cú pháp để tạo một chỉ mục trong Neo4j.

DROP INDEX ON:label(node)

Thí dụ

Sau đây là một Truy vấn Cypher mẫu để tạo một chỉ mục trên nút có tên “Dhawan” trong Neo4j.

DROP INDEX ON:player(Dhawan)

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

Trong cơ sở dữ liệu Neo4j, lệnh CQL CREATE luôn tạo một nút hoặc mối quan hệ mới, có nghĩa là mặc dù bạn sử dụng các giá trị giống nhau, nó sẽ chèn một hàng mới. Theo yêu cầu ứng dụng của chúng tôi đối với một số nút hoặc mối quan hệ, chúng tôi phải tránh sự trùng lặp này. Đối với điều này, chúng ta nên sử dụng một số ràng buộc cơ sở dữ liệu để tạo quy tắc trên một hoặc nhiều thuộc tính của một nút hoặc mối quan hệ.

Giống như SQL, cơ sở dữ liệu Neo4j cũng hỗ trợ ràng buộc DUY NHẤT về thuộc tính nút hoặc mối quan hệ. Ràng buộc UNIQUE được sử dụng để tránh các bản ghi trùng lặp và để thực thi quy tắc toàn vẹn dữ liệu.

Tạo Ràng buộc DUY NHẤT

Neo4j CQL cung cấp lệnh "CREATE CONSTRAINT" để tạo các ràng buộc duy nhất trên các thuộc tính của nút hoặc mối quan hệ.

Cú pháp

Sau đây là cú pháp để tạo một ràng buộc DUY NHẤT trong Neo4j.

MATCH (root {name: "Dhawan"}) 
CREATE UNIQUE (root)-[:LOVES]-(someone) 
RETURN someone

Thí dụ

Trước khi tiếp tục với ví dụ, hãy tạo 4 nút như hình dưới đây.

CREATE(Dhawan:player{id:001, name: "shikar Dhawan", YOB: 1995, POB: "Delhi"}) 
CREATE(Jonathan:player {id:002, name: "Jonathan Trott", YOB: 1981, POB: "CapeTown"}) 
CREATE(Sangakkara:player {id:003, name: "Kumar Sangakkara", YOB: 1977, POB: "Matale"}) 
CREATE(Rohit:player {id:004, name: "Rohit Sharma", YOB: 1987, POB: "Nagpur"}) 
CREATE(Virat:player {id:005, name: "Virat Kohli", YOB: 1988, POB: "Delhi"})

Sau đây là một Truy vấn Cypher mẫu để tạo một ràng buộc DUY NHẤT trên id thuộc tính bằng cách sử dụng Neo4j.

CREATE CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.

xác minh

Bây giờ, hãy thử thêm một nút khác có giá trị id dư thừa. Ở đây, chúng tôi đang cố gắng tạo một nút có id002.

CREATE (Jadeja:player {id:002, name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})

Nếu bạn thực hiện truy vấn này, bạn sẽ nhận được thông báo lỗi như được hiển thị trong ảnh chụp màn hình sau.

Chúng ta đã thảo luận về việc tạo các thao tác ràng buộc UNIQUE với các ví dụ trong chương trước. Trong chương này, chúng ta sẽ thảo luận về việc loại bỏ hoạt động ràng buộc UNIQUE với các ví dụ.

Neo4j CQL cung cấp lệnh "DROP CONSTRAINT" để xóa ràng buộc Duy nhất hiện có khỏi thuộc tính nút hoặc mối quan hệ.

Cú pháp

Sau đây là cú pháp để loại bỏ một ràng buộc DUY NHẤT trong Neo4j.

DROP CONSTRAINT ON (node:label) 
ASSERT node.id IS UNIQUE

Thí dụ

Sau đây là một truy vấn Cypher mẫu để loại bỏ ràng buộc DUY NHẤT trên thuộc tính id.

DROP CONSTRAINT ON (n:player) 
ASSERT n.id IS UNIQUE

Để thực hiện truy vấn trên, hãy thực hiện các bước sau:

Step 1- Mở Ứng dụng máy tính để bàn Neo4j và khởi động Máy chủ Neo4j. Mở ứng dụng trình duyệt tích hợp sẵn của Neo4j bằng URLhttp://localhost:7474/ như thể hiện trong ảnh chụp màn hình sau.

Step 2 - Sao chép và dán truy vấn mong muốn vào dấu nhắc đô la và nhấn nút phát (để thực hiện truy vấn) được đánh dấu trong ảnh chụp màn hình sau.

Kết quả

Khi thực hiện, bạn sẽ nhận được kết quả sau.