Neo4j 備忘單

2021-08-30 17:01 更新
STARTS WITH, ENDS WITH, CONTAINS

Neo4j 備忘單,包含入門資源和有關(guān)如何使用 Cypher 查詢數(shù)據(jù)庫的信息。

開始

Neo4j 入門

Neo4j 是一個圖數(shù)據(jù)庫,由通過關(guān)系連接在一起的節(jié)點(diǎn)組成。如果您有一個高度連接的數(shù)據(jù)集或有許多連接的查詢,您可能會考慮使用 Graph 數(shù)據(jù)庫。

圖數(shù)據(jù)庫概念

節(jié)點(diǎn) 節(jié)點(diǎn)通常用于表示數(shù)據(jù)中的實(shí)體事物例如,一個電影
關(guān)系 關(guān)系用于將兩個節(jié)點(diǎn)連接在一起并將數(shù)據(jù)組織成結(jié)構(gòu)。例如,一個人演了一部電影。關(guān)系具有類型方向,盡管在查詢時可以忽略方向。
標(biāo)簽 標(biāo)簽用于將節(jié)點(diǎn)分組。例如,一個人可能有PersonActor標(biāo)簽。
關(guān)系類型 每個關(guān)系都有一個類型。關(guān)系允許您探索圖形的較小部分。
特性 節(jié)點(diǎn)和關(guān)系都可以針對它們設(shè)置屬性。屬性是名稱-值對

Neo4j 語法

讀取查詢結(jié)構(gòu)

[USE]
[MATCH WHERE]
[OPTIONAL MATCH WHERE]
[WITH [ORDER BY] [SKIP] [LIMIT]]
RETURN [ORDER BY] [SKIP] [LIMIT]

只寫查詢結(jié)構(gòu)

[USE]
(CREATE | MERGE)*
[SET|DELETE|REMOVE|FOREACH]*
[RETURN [ORDER BY] [SKIP] [LIMIT]]

讀寫查詢結(jié)構(gòu)

[USE]
[MATCH WHERE]
[OPTIONAL MATCH WHERE]
[WITH [ORDER BY] [SKIP] [LIMIT]]
(CREATE | MERGE)*
[SET|DELETE|REMOVE|FOREACH]*
[RETURN [ORDER BY] [SKIP] [LIMIT]]

Neo4j 讀取數(shù)據(jù)

Match 匹配

MATCH (n:Person)-[:KNOWS]->(m:Person)
WHERE n.name = 'Alice'

節(jié)點(diǎn)模式可以包含標(biāo)簽和屬性。

MATCH (n)-->(m)

在 MATCH 中可以使用任何模式。

MATCH (n {name: 'Alice'})-->(m)

具有節(jié)點(diǎn)屬性的模式。

MATCH p = (n)-->(m)

為 p 分配路徑。

OPTIONAL MATCH (n)-[r]->(m)

可選模式:空值將用于缺失的部分。

Where 查詢

WHERE n.property <> $value

使用謂語進(jìn)行過濾。請注意,WHERE 始終是 MATCH、OPTIONAL MATCH 或 WITH 子句的一部分。將它放在查詢中的不同子句之后會改變它的作用。

WHERE EXISTS {
  MATCH (n)-->(m) WHERE n.age = m.age
}

使用存在子查詢進(jìn)行過濾。

Return 返回

RETURN *

返回所有變量的值。

RETURN n AS columnName

對結(jié)果列名稱使用別名。

RETURN DISTINCT n

返回唯一行。

ORDER BY n.property

對結(jié)果進(jìn)行排序。

ORDER BY n.property DESC

按降序?qū)Y(jié)果進(jìn)行排序。

SKIP $skipNumber

跳過一些結(jié)果。

LIMIT $limitNumber

限制結(jié)果的數(shù)量。

SKIP $skipNumber LIMIT $limitNumber

跳過頂部的結(jié)果并限制結(jié)果數(shù)量。

RETURN count(*)

匹配行數(shù)。有關(guān)更多信息,請參閱聚合函數(shù)。

With 和

MATCH (user)-[:FRIEND]-(friend)
WHERE user.name = $name
WITH user, count(friend) AS friends
WHERE friends > 10
RETURN user

WITH 語法類似于 RETURN。它顯式地分離查詢部分,允許您聲明哪些變量要轉(zhuǎn)移到下一部分。

MATCH (user)-[:FRIEND]-(friend)
WITH user, count(friend) AS friends
ORDER BY friends DESC
  SKIP 1
  LIMIT 3
RETURN user

ORDER BY、SKIP 和 LIMIT 也可以與 WITH 一起使用。

Union 聯(lián)合

MATCH (a)-[:KNOWS]->(b)
RETURN b.name
UNION
MATCH (a)-[:LOVES]->(b)
RETURN b.name

返回所有查詢結(jié)果的不同聯(lián)合。結(jié)果列類型和名稱必須匹配。

MATCH (a)-[:KNOWS]->(b)
RETURN b.name
UNION ALL
MATCH (a)-[:LOVES]->(b)
RETURN b.name

返回所有查詢結(jié)果的并集,包括重復(fù)的行。

Neo4j 寫入數(shù)據(jù)

創(chuàng)建

CREATE (n {name: $value})

創(chuàng)建具有給定屬性的節(jié)點(diǎn)。

CREATE (n $map)

創(chuàng)建具有給定屬性的節(jié)點(diǎn)。

UNWIND $listOfMaps AS properties
CREATE (n) SET n = properties

創(chuàng)建具有給定屬性的節(jié)點(diǎn)。

CREATE (n)-[r:KNOWS]->(m)

創(chuàng)建與給定類型和方向的關(guān)系;給它綁定一個變量。

CREATE (n)-[:LOVES {since: $value}]->(m)

創(chuàng)建具有給定類型、方向和屬性的關(guān)系。

設(shè)置

SET n.property1 = $value1,
    n.property2 = $value2

更新或創(chuàng)建屬性。

SET n = $map

設(shè)置所有屬性。這將刪除任何現(xiàn)有屬性。

SET n += $map

添加和更新屬性,同時保留現(xiàn)有屬性。

SET n:Person

將標(biāo)簽 Person 添加到節(jié)點(diǎn)。

合并

MERGE (n:Person {name: $value})
  ON CREATE SET n.created = timestamp()
  ON MATCH SET
    n.counter = coalesce(n.counter, 0) + 1,
    n.accessTime = timestamp()

匹配一個模式,如果它不存在則創(chuàng)建它。使用 ON CREATE 和 ON MATCH 進(jìn)行條件更新。

MATCH (a:Person {name: $value1}),
      (b:Person {name: $value2})
MERGE (a)-[r:LOVES]->(b)

MERGE 查找或創(chuàng)建節(jié)點(diǎn)之間的關(guān)系。

MATCH (a:Person {name: $value1})
MERGE
  (a)-[r:KNOWS]->(b:Person {name: $value3})

MERGE 查找或創(chuàng)建附加到節(jié)點(diǎn)的路徑。

刪除

DELETE n, r

刪除一個節(jié)點(diǎn)和一個關(guān)系。

DETACH DELETE n

刪除一個節(jié)點(diǎn)和連接到它的所有關(guān)系。

MATCH (n)
DETACH DELETE n

從數(shù)據(jù)庫中刪除所有節(jié)點(diǎn)和關(guān)系。

移除

REMOVE n:Person

從 n 中移除標(biāo)簽。

REMOVE n.property

移除一個屬性。

FOREACH

FOREACH (r IN relationships(path) |
  SET r.marked = true)

對路徑中的每個關(guān)系執(zhí)行變異操作。

FOREACH (value IN coll |
 CREATE (:Person {name: value}))

對列表中的每個元素執(zhí)行變異操作。

CALL 子查詢

CALL {
  MATCH (p:Person)-[:FRIEND_OF]->(other:Person) RETURN p, other
  UNION
  MATCH (p:Child)-[:CHILD_OF]->(other:Parent) RETURN p, other
}

這將調(diào)用具有兩個聯(lián)合部分的子查詢。之后可以對子查詢的結(jié)果進(jìn)行后處理。

調(diào)用程序

CALL db.labels() YIELD label

這顯示了對內(nèi)置過程 db.labels 的獨(dú)立調(diào)用,以列出數(shù)據(jù)庫中使用的所有標(biāo)簽。請注意,必需的過程參數(shù)在過程名稱后的方括號中明確給出。

CALL db.labels() YIELD *

獨(dú)立調(diào)用可以使用 YIELD * 返回所有列。

CALL java.stored.procedureWithArgs

獨(dú)立調(diào)用可以省略 YIELD 并且還通過語句參數(shù)隱式提供參數(shù),例如,需要一個參數(shù)輸入的獨(dú)立調(diào)用可以通過傳遞參數(shù)映射 {input: 'foo'} 來運(yùn)行。

CALL db.labels() YIELD label
RETURN count(label) AS count

在較大的查詢中調(diào)用內(nèi)置過程 db.labels 以計(jì)算數(shù)據(jù)庫中使用的所有標(biāo)簽。在更大的查詢中調(diào)用總是需要使用 YIELD 顯式傳遞參數(shù)和命名結(jié)果。

Import 導(dǎo)入

LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists.csv' AS line
CREATE (:Artist {name: line[1], year: toInteger(line[2])})

從 CSV 文件加載數(shù)據(jù)并創(chuàng)建節(jié)點(diǎn)。

LOAD CSV WITH HEADERS FROM
'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists-with-headers.csv' AS line
CREATE (:Artist {name: line.Name, year: toInteger(line.Year)})

加載帶有標(biāo)題的 CSV 數(shù)據(jù)。

USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM
'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists-with-headers.csv' AS line
CREATE (:Artist {name: line.Name, year: toInteger(line.Year)})

導(dǎo)入大量數(shù)據(jù)時,每 500 行后提交當(dāng)前事務(wù)。

LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists-fieldterminator.csv'
AS line FIELDTERMINATOR ';'
CREATE (:Artist {name: line[1], year: toInteger(line[2])})

使用不同的字段終止符,而不是默認(rèn)的逗號(周圍沒有空格)。

LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists.csv' AS line
RETURN DISTINCT file()

返回 LOAD CSV 正在處理的文件的絕對路徑,如果在 LOAD CSV 上下文之外調(diào)用,則返回 null。

LOAD CSV FROM
'https://neo4j.com/docs/cypher-refcard/4.3/csv/artists.csv' AS line
RETURN linenumber()

返回 LOAD CSV 當(dāng)前正在處理的行號,如果在 LOAD CSV 上下文之外調(diào)用,則返回 null。

操作符

一般的 General DISTINCT, ., []
數(shù)學(xué) Mathematical +, -, *, /, %, ^
比較 Comparison =, <>, <, >, <=, >=, IS NULL, IS NOT NULL
布爾值 Boolean AND, OR, XOR, NOT
字符串 String +
列表 List +, IN, [x], [x .. y]
正則表達(dá)式 Regular Expression =~
字符串匹配 String Matching STARTS WITH, ENDS WITH, CONTAINS

空值

  • null 用于表示缺失/未定義的值。

  • null不等于null不知道兩個值并不意味著它們是相同的值。所以表達(dá)式null = nullyieldnull而 not true要檢查表達(dá)式是否為null,請使用IS NULL.

  • 如果任何參數(shù)是 ,則算術(shù)表達(dá)式、比較和函數(shù)調(diào)用(除了coalesce)將返回。nullnull

  • 嘗試訪問列表中缺失的元素或不存在的屬性會產(chǎn)生null。

  • OPTIONAL MATCH子句中,nulls將用于模式的缺失部分。

方式

(n:Person)

帶有 Person 標(biāo)簽的節(jié)點(diǎn)。

(n:Person:Swedish)

帶有人名和瑞典語標(biāo)簽的節(jié)點(diǎn)。

(n:Person {name: $value})

具有聲明屬性的節(jié)點(diǎn)。

()-[r {name: $value}]-()

將關(guān)系與聲明的屬性匹配。

(n)-->(m)

從 n 到 m 的關(guān)系。

(n)--(m)

n 和 m 之間任意方向的關(guān)系。

(n:Person)-->(m)

節(jié)點(diǎn) n 標(biāo)記為與 m 有關(guān)系的人。

(m)<-[:KNOWS]-(n)

類型 KNOWS 從 n 到 m 的關(guān)系。

(n)-[:KNOWS|:LOVES]->(m)

從 n 到 m 的 KNOWS 類型或 LOVES 類型的關(guān)系。

(n)-[r]->(m)

將關(guān)系綁定到變量 r。

(n)-[*1..5]->(m)

從 n 到 m 的 1 到 5 種關(guān)系的可變長度路徑。

(n)-[*]->(m)

從 n 到 m 的任意數(shù)量關(guān)系的可變長度路徑。(參見性能部分。)

(n)-[:KNOWS]->(m {property: $value})

從節(jié)點(diǎn) n 到具有聲明屬性的節(jié)點(diǎn) m 的 KNOWS 類型的關(guān)系。

shortestPath((n1:Person)-[*..6]-(n2:Person))

找到一條最短路徑。

allShortestPaths((n1:Person)-[*..6]->(n2:Person))

找出所有最短路徑。

size((n)-->()-->())

計(jì)算與模式匹配的路徑。

使用

USE myDatabase

選擇要對其執(zhí)行查詢或查詢部分的 myDatabase。

USE neo4j
MATCH (n:Person)-[:KNOWS]->(m:Person)
WHERE n.name = 'Alice'

針對 Neo4j 數(shù)據(jù)庫執(zhí)行的 MATCH 查詢。

顯示功能和程序

SHOW FUNCTIONS

列出所有可用的功能。

SHOW PROCEDURES EXECUTABLE YIELD name

列出當(dāng)前用戶可以執(zhí)行的所有過程,并僅返回過程名稱。

標(biāo)簽

CREATE (n:Person {name: $value})

創(chuàng)建一個帶有標(biāo)簽和屬性的節(jié)點(diǎn)。

MERGE (n:Person {name: $value})

匹配或創(chuàng)建具有標(biāo)簽和屬性的唯一節(jié)點(diǎn)。

SET n:Spouse:Parent:Employee

向節(jié)點(diǎn)添加標(biāo)簽。

MATCH (n:Person)

匹配標(biāo)記為 Person 的節(jié)點(diǎn)。

MATCH (n:Person)
WHERE n.name = $value

匹配具有給定名稱的標(biāo)記為 Person 的節(jié)點(diǎn)。

WHERE (n:Person)

檢查節(jié)點(diǎn)上標(biāo)簽是否存在。

labels(n)

節(jié)點(diǎn)的標(biāo)簽。

REMOVE n:Person

從節(jié)點(diǎn)上刪除標(biāo)簽。

列表

['a', 'b', 'c'] AS list

文字列表在方括號中聲明。

size($list) AS len, $list[0] AS value

列表可以作為參數(shù)傳入。

range($firstNum, $lastNum, $step) AS list

range() 創(chuàng)建一個數(shù)字列表(步驟是可選的),其他返回列表的函數(shù)有:labels()、nodes()、relationship()。

MATCH p = (a)-[:KNOWS*]->()
RETURN relationships(p) AS r

可以使用命名路徑和關(guān)系()返回包含可變長度路徑的關(guān)系列表。

RETURN matchedNode.list[0] AS value,
       size(matchedNode.list) AS len

屬性可以是字符串、數(shù)字或布爾值的列表。

list[$idx] AS value,
list[$startIdx..$endIdx] AS slice

可以使用方括號中的 idx 下標(biāo)訪問列表元素。無效索引返回 null。可以以從 start_idx 到 end_idx 的間隔檢索切片,每個間隔都可以省略或?yàn)樨?fù)。超出范圍的元素將被忽略。

UNWIND $names AS name
MATCH (n {name: name})
RETURN avg(n.age)

使用 UNWIND,任何列表都可以轉(zhuǎn)換回單獨(dú)的行。該示例匹配名稱列表中的所有名稱。

MATCH (a)
RETURN [(a)-->(b) WHERE b.name = 'Bob' | b.age]

模式理解可用于從匹配項(xiàng)直接向列表進(jìn)行自定義投影。

MATCH (person)
RETURN person { .name, .age}

地圖投影可以很容易地從節(jié)點(diǎn)、關(guān)系和其他地圖值構(gòu)建。

映射

{name: 'Alice', age: 38,
 address: {city: 'London', residential: true}}

文字映射在花括號中聲明,就像屬性映射一樣。支持列表。

WITH {person: {name: 'Anne', age: 25}} AS p
RETURN p.person.name

訪問嵌套映射的屬性。

MERGE (p:Person {name: $map.name})
  ON CREATE SET p = $map

地圖可以作為參數(shù)傳入并用作地圖或通過訪問鍵使用。

MATCH (matchedNode:Person)
RETURN matchedNode

節(jié)點(diǎn)和關(guān)系作為其數(shù)據(jù)的映射返回。

map.name, map.age, map.children[0]

可以通過它們的鍵訪問映射條目。無效的鍵會導(dǎo)致錯誤。

謂語

n.property <> $value

使用比較運(yùn)算符。

toString(n.property) = $value

使用函數(shù)。

n.number >= 1 AND n.number <= 10

使用布爾運(yùn)算符來組合謂語。

1 <= n.number <= 10

使用鏈?zhǔn)竭\(yùn)算符來組合謂語。

n:Person

檢查節(jié)點(diǎn)標(biāo)簽。

variable IS NOT NULL

檢查某些內(nèi)容是否不為空,例如屬性是否存在。

n.property IS NULL OR n.property = $value

要么屬性不存在,要么謂語為真。

n.property = $value

不存在的屬性返回 null,它不等于任何東西。

n["property"] = $value

也可以使用動態(tài)計(jì)算的屬性名稱訪問屬性。

n.property STARTS WITH 'Tim' OR
n.property ENDS WITH 'n' OR
n.property CONTAINS 'goodie'

字符串匹配。

n.property =~ 'Tim.*'

字符串正則表達(dá)式匹配。

(n)-[:KNOWS]->(m)

確保模式至少有一個匹配項(xiàng)。

NOT (n)-[:KNOWS]->(m)

從結(jié)果中排除 (n)-[:KNOWS]->(m) 的匹配項(xiàng)。

n.property IN [$value1, $value2]

檢查列表中是否存在元素。

列出謂語

all(x IN coll WHERE x.property IS NOT NULL)

如果謂語對于列表中的所有元素都為真,則返回真。

any(x IN coll WHERE x.property IS NOT NULL)

如果謂語對于列表中的至少一個元素為真,則返回真。

none(x IN coll WHERE x.property IS NOT NULL)

如果列表中所有元素的謂語都為假,則返回真。

single(x IN coll WHERE x.property IS NOT NULL)

如果謂語對于列表中的一個元素為真,則返回真。

案例

CASE n.eyes
 WHEN 'blue' THEN 1
 WHEN 'brown' THEN 2
 ELSE 3
END

從匹配的 WHEN 值中返回 THEN 值。ELSE 值是可選的,如果缺失則替換為 null。

CASE
 WHEN n.eyes = 'blue' THEN 1
 WHEN n.age < 40 THEN 2
 ELSE 3
END

從第一個 WHEN 謂語評估為真返回 THEN 值。謂語按順序進(jìn)行評估。

列出表達(dá)式

size($list)

列表中的元素?cái)?shù)。

reverse($list)

顛倒列表中元素的順序。

head($list), last($list), tail($list)

head() 返回列表的第一個元素,last() 返回列表的最后一個元素。tail() 返回除第一個元素之外的所有元素。對于空列表,所有返回 null。

[x IN list | x.prop]

原始列表中每個元素的表達(dá)式值列表。

[x IN list WHERE x.prop <> $value]

謂語為真的元素的過濾列表。

[x IN list WHERE x.prop <> $value | x.prop]

一種列表推導(dǎo)式,用于過濾列表并為該列表中的每個元素提取表達(dá)式的值。

reduce(s = "", x IN list | s + x.prop)

為列表中的每個元素評估表達(dá)式,累積結(jié)果。

函數(shù)

coalesce(n.property, $defaultValue)

第一個非空表達(dá)式。

timestamp()

自 UTC 1970 年 1 月 1 日午夜以來的毫秒數(shù)。

id(nodeOrRelationship)

關(guān)系或節(jié)點(diǎn)的內(nèi)部 ID。

toInteger($expr)

如果可能,將給定的輸入轉(zhuǎn)換為整數(shù);否則返回空值。

toFloat($expr)

如果可能,將給定的輸入轉(zhuǎn)換為浮點(diǎn)數(shù);否則返回空值。

toBoolean($expr)

如果可能,將給定的輸入轉(zhuǎn)換為布爾值;否則返回空值。

keys($expr)

返回節(jié)點(diǎn)、關(guān)系或映射的屬性名稱的字符串表示形式列表。

properties($expr)

返回包含節(jié)點(diǎn)或關(guān)系的所有屬性的映射。

路徑函數(shù)

length(path)

路徑中的關(guān)系數(shù)。

nodes(path)

路徑中的節(jié)點(diǎn)作為列表。

relationships(path)

路徑中的關(guān)系作為列表。

[x IN nodes(path) | x.prop]

從路徑中的節(jié)點(diǎn)中提取屬性。

空間函數(shù)

point({x: $x, y: $y})

返回二維笛卡爾坐標(biāo)系中的一個點(diǎn)。

point({latitude: $y, longitude: $x})

返回二維地理坐標(biāo)系中的一個點(diǎn),坐標(biāo)以十進(jìn)制度數(shù)指定。

point({x: $x, y: $y, z: $z})

返回 3D 笛卡爾坐標(biāo)系中的一個點(diǎn)。

point({latitude: $y, longitude: $x, height: $z})

返回 3D 地理坐標(biāo)系中的一個點(diǎn),緯度和經(jīng)度以十進(jìn)制度數(shù)表示,高度以米為單位。

distance(point({x: $x1, y: $y1}), point({x: $x2, y: $y2}))

返回一個浮點(diǎn)數(shù),表示兩點(diǎn)之間的線性距離。返回的單位將與點(diǎn)坐標(biāo)的單位相同,并且適用于 2D 和 3D 笛卡爾點(diǎn)。

distance(point({latitude: $y1, longitude: $x1}), point({latitude: $y2, longitude: $x2}))

以米為單位返回兩點(diǎn)之間的測地線距離。它也可用于 3D 地理點(diǎn)。

Neo4j 函數(shù)

時間函數(shù)

date("2018-04-05")

返回從字符串解析的日期。

localtime("12:45:30.25")

返回沒有時區(qū)的時間。

time("12:45:30.25+01:00")

返回指定時區(qū)的時間。

localdatetime("2018-04-05T12:34:00")

返回沒有時區(qū)的日期時間。

datetime("2018-04-05T12:34:00[Europe/Berlin]")

返回指定時區(qū)的日期時間。

datetime({epochMillis: 3360000})

將 3360000 作為 UNIX 紀(jì)元時間轉(zhuǎn)換為正常日期時間。

date({year: $year, month: $month, day: $day})

也可以使用命名組件的映射調(diào)用所有時間函數(shù)。此示例從年、月和日組件返回日期。每個函數(shù)都支持一組不同的可能組件。

datetime({date: $date, time: $time})

可以通過組合其他類型來創(chuàng)建時間類型。本示例根據(jù)日期和時間創(chuàng)建日期時間。

date({date: $datetime, day: 5})

可以通過從更復(fù)雜的類型中進(jìn)行選擇以及覆蓋單個組件來創(chuàng)建時間類型。此示例通過從日期時間中進(jìn)行選擇以及覆蓋日期組件來創(chuàng)建日期。

WITH date("2018-04-05") AS d
RETURN d.year, d.month, d.day, d.week, d.dayOfWeek

訪問器允許提取時間類型的組件。

持續(xù)時間函數(shù)

duration("P1Y2M10DT12H45M30.25S")

返回 1 年、2 個月、10 天、12 小時、45 分鐘和 30.25 秒的持續(xù)時間。

duration.between($date1,$date2)

返回兩個時間實(shí)例之間的持續(xù)時間。

WITH duration("P1Y2M10DT12H45M") AS d
RETURN d.years, d.months, d.days, d.hours, d.minutes

返回 1 年 14 個月 10 天 12 小時 765 分鐘。

WITH duration("P1Y2M10DT12H45M") AS d
RETURN d.years, d.monthsOfYear, d.days, d.hours, d.minutesOfHour

返回 1 年 2 個月 10 天 12 小時 45 分鐘。

date("2015-01-01") + duration("P1Y1M1D")

返回日期 2016-02-02。也可以從時間實(shí)例中減去持續(xù)時間。

duration("PT30S") * 10

返回 5 分鐘的持續(xù)時間。也可以將持續(xù)時間除以數(shù)字。

數(shù)學(xué)函數(shù)

abs($expr)

絕對值。

rand()

返回 0(含)到 1(不含)范圍內(nèi)的隨機(jī)數(shù),[0,1)。為每次調(diào)用返回一個新值。也可用于選擇子集或隨機(jī)排序。

round($expr)

四舍五入到最接近的整數(shù);ceil() 和 floor() 向上或向下查找下一個整數(shù)。

sqrt($expr)

平方根。

sign($expr)

0 表示零,-1 表示負(fù)值,1 表示正值。

sin($expr)

三角函數(shù)還包括 cos()、tan()、cot()、asin()、acos()、atan()、atan2() 和 haversin()。如果沒有另外指定,三角函數(shù)的所有參數(shù)都應(yīng)以弧度為單位。

degrees($expr), radians($expr), pi()

將弧度轉(zhuǎn)換為度數(shù);使用 radians() 表示相反,pi() 表示 π。

log10($expr), log($expr), exp($expr), e()

以 10 為底的對數(shù)、自然對數(shù)、e 的參數(shù)冪,以及 e 的值。

字符串函數(shù)

toString($expression)

表達(dá)式的字符串表示。

replace($original, $search, $replacement)

用替換替換所有出現(xiàn)的搜索。所有參數(shù)都必須是表達(dá)式。

substring($original, $begin, $subLength)

獲取字符串的一部分。subLength 參數(shù)是可選的。

left($original, $subLength),
  right($original, $subLength)

字符串的第一部分。字符串的最后一部分。

trim($original), lTrim($original),
  rTrim($original)

修剪所有空白,或在左側(cè)或右側(cè)。

toUpper($original), toLower($original)

大寫和小寫。

split($original, $delimiter)

將字符串拆分為字符串列表。

reverse($original)

反轉(zhuǎn)字符串。

size($string)

計(jì)算字符串中的字符數(shù)。

關(guān)系函數(shù)

type(a_relationship)

關(guān)系類型的字符串表示。

startNode(a_relationship)

關(guān)系的起始節(jié)點(diǎn)。

endNode(a_relationship)

關(guān)系的結(jié)束節(jié)點(diǎn)。

id(a_relationship)

關(guān)系的內(nèi)部 ID。

聚合函數(shù)

count(*)

匹配行數(shù)。

count(variable)

非空值的數(shù)量。

count(DISTINCT variable)

所有聚合函數(shù)也采用 DISTINCT 運(yùn)算符,它從值中刪除重復(fù)項(xiàng)。

collect(n.property)

從值中列出,忽略空值。

sum(n.property)

求和數(shù)值。類似的函數(shù)有 avg()、min()、max()。

percentileDisc(n.property, $percentile)

離散百分位。連續(xù)百分位數(shù)是 percentileCont()。百分位參數(shù)是從 0.0 到 1.0。

stDev(n.property)

總體樣本的標(biāo)準(zhǔn)差。對于整個人口使用 stDevP()。

Neo4j 模式操作

索引

CREATE INDEX FOR (p:Person) ON (p.name)

在帶有標(biāo)簽 Person 和屬性名稱的節(jié)點(diǎn)上創(chuàng)建索引。

CREATE INDEX index_name FOR ()-[k:KNOWS]-() ON (k.since)

使用名稱 index_name 為類型為 KNOWS 和屬性的關(guān)系創(chuàng)建索引。

CREATE INDEX FOR (p:Person) ON (p.surname)
OPTIONS {indexProvider: 'native-btree-1.0', indexConfig: {`spatial.cartesian.min`: [-100.0, -100.0], `spatial.cartesian.max`: [100.0, 100.0]}}

使用索引提供程序 native-btree-1.0 和給定的 spatial.cartesian 設(shè)置在帶有標(biāo)簽 Person 和屬性姓氏的節(jié)點(diǎn)上創(chuàng)建索引。其他索引設(shè)置將具有其默認(rèn)值。

CREATE INDEX FOR (p:Person) ON (p.name, p.age)

在帶有標(biāo)簽 Person 和屬性 name 和 age 的節(jié)點(diǎn)上創(chuàng)建一個復(fù)合索引,如果索引已經(jīng)存在,則拋出錯誤。

CREATE INDEX IF NOT EXISTS FOR (p:Person) ON (p.name, p.age)

在帶有標(biāo)簽 Person 和屬性 name 和 age 的節(jié)點(diǎn)上創(chuàng)建一個復(fù)合索引(如果它不存在),如果它存在則不執(zhí)行任何操作。

CREATE LOOKUP INDEX lookup_index_name FOR (n) ON EACH labels(n)

在具有任何標(biāo)簽的節(jié)點(diǎn)上創(chuàng)建一個名為 lookup_index_name 的令牌查找索引。

CREATE LOOKUP INDEX FOR ()-[r]-() ON EACH type(r)

在具有任何關(guān)系類型的關(guān)系上創(chuàng)建標(biāo)記查找索引。

CREATE FULLTEXT INDEX node_fulltext_index_name FOR (n:Friend) ON EACH [n.name]
OPTIONS {indexConfig: {`fulltext.analyzer`: 'swedish'}}

在名稱為 node_fulltext_index_name 和分析器瑞典語的節(jié)點(diǎn)上創(chuàng)建全文索引。節(jié)點(diǎn)上的全文索引只能由過程 db.index.fulltext.queryNodes 使用。其他索引設(shè)置將具有其默認(rèn)值。

CREATE FULLTEXT INDEX rel_fulltext_index_name FOR ()-[r:HAS_PET|BROUGHT_PET]-() ON EACH [r.since, r.price]

為關(guān)系創(chuàng)建一個名為 rel_fulltext_index_name 的全文索引。關(guān)系的全文索引只能由過程 db.index.fulltext.queryRelationships 使用。

SHOW INDEXES

列出所有索引。

MATCH (n:Person) WHERE n.name = $value

可以自動使用索引進(jìn)行相等比較。請注意,例如 toLower(n.name) = $value 不會使用索引。

MATCH (n:Person)
WHERE n.name IN [$value]

索引可以自動用于 IN 列表檢查。

MATCH (n:Person)
WHERE n.name = $value and n.age = $value2

復(fù)合索引可以自動用于兩個屬性的相等比較。請注意,復(fù)合索引的所有屬性都需要有謂語才能使用。

MATCH (n:Person)
USING INDEX n:Person(name)
WHERE n.name = $value

當(dāng) Cypher 使用次優(yōu)索引或應(yīng)該使用多個索引時,可以強(qiáng)制使用索引。

DROP INDEX index_name

刪除名為 index_name 的索引,如果索引不存在則拋出錯誤。

DROP INDEX index_name IF EXISTS

如果存在,則刪除名為 index_name 的索引,如果不存在則不執(zhí)行任何操作。

約束

CREATE CONSTRAINT ON (p:Person)
       ASSERT p.name IS UNIQUE

在標(biāo)簽 Person 和屬性名稱上創(chuàng)建唯一的屬性約束。如果使用已存在的名稱更新或創(chuàng)建具有該標(biāo)簽的任何其他節(jié)點(diǎn),則寫入操作將失敗。此約束將創(chuàng)建隨附索引。

CREATE CONSTRAINT uniqueness ON (p:Person)
       ASSERT p.age IS UNIQUE

在標(biāo)簽 Person 和屬性 age 上創(chuàng)建唯一屬性約束,名稱為 uniqueness。如果任何其他具有該標(biāo)簽的節(jié)點(diǎn)被更新或創(chuàng)建時的年齡已經(jīng)存在,則寫入操作將失敗。此約束將創(chuàng)建隨附索引。

CREATE CONSTRAINT ON (p:Person)
       ASSERT p.surname IS UNIQUE
       OPTIONS {indexProvider: 'native-btree-1.0'}

使用索引提供程序 native-btree-1.0 為隨附的索引在標(biāo)簽 Person 和屬性姓氏上創(chuàng)建唯一的屬性約束。

CREATE CONSTRAINT ON (p:Person)
       ASSERT p.name IS NOT NULL

(★) 在標(biāo)簽Person 和屬性名稱上創(chuàng)建節(jié)點(diǎn)屬性存在約束,如果約束已經(jīng)存在則拋出錯誤。如果創(chuàng)建帶有該標(biāo)簽的節(jié)點(diǎn)而沒有名稱,或者如果從帶有 Person 標(biāo)簽的現(xiàn)有節(jié)點(diǎn)中刪除了 name 屬性,則寫入操作將失敗。

CREATE CONSTRAINT node_exists IF NOT EXISTS ON (p:Person)
       ASSERT p.name IS NOT NULL

(★) 如果標(biāo)簽 Person 和屬性名稱上的節(jié)點(diǎn)屬性存在約束或任何名稱為 node_exists 的約束已經(jīng)存在,那么什么都不會發(fā)生。如果不存在這樣的約束,那么它將被創(chuàng)建。

CREATE CONSTRAINT ON ()-[l:LIKED]-()
       ASSERT l.when IS NOT NULL

(★) 對LIKED 類型和屬性when 創(chuàng)建關(guān)系屬性存在約束。如果在沒有 when 的情況下創(chuàng)建具有該類型的關(guān)系,或者如果從具有 LIKED 類型的現(xiàn)有關(guān)系中刪除 when 屬性,則寫入操作將失敗。

CREATE CONSTRAINT relationship_exists ON ()-[l:LIKED]-()
       ASSERT l.since IS NOT NULL

(★) 對LIKED 類型和property since 創(chuàng)建關(guān)系屬性存在約束,名稱為relationship_exists。如果在沒有since的情況下創(chuàng)建了具有該類型的關(guān)系,或者如果從具有 LIKED 類型的現(xiàn)有關(guān)系中刪除了 since 屬性,則寫入操作將失敗。

SHOW UNIQUE CONSTRAINTS YIELD *

列出所有唯一約束。

CREATE CONSTRAINT ON (p:Person)
      ASSERT (p.firstname, p.surname) IS NODE KEY

(★) 在標(biāo)簽Person 和屬性firstname 和surname 上創(chuàng)建節(jié)點(diǎn)鍵約束。如果創(chuàng)建具有該標(biāo)簽的節(jié)點(diǎn)時沒有名字和姓氏,或者兩者的組合不是唯一的,或者如果修改了具有 Person 標(biāo)簽的現(xiàn)有節(jié)點(diǎn)上的名字和/或姓氏標(biāo)簽以違反這些約束,則寫入操作將失敗。

CREATE CONSTRAINT node_key ON (p:Person)
      ASSERT (p.name, p.surname) IS NODE KEY

(★) 在標(biāo)簽Person 和屬性name 和surname 上創(chuàng)建節(jié)點(diǎn)鍵約束,名稱為node_key。如果創(chuàng)建具有該標(biāo)簽的節(jié)點(diǎn)時沒有姓名和姓氏,或者兩者的組合不是唯一的,或者如果修改了具有 Person 標(biāo)簽的現(xiàn)有節(jié)點(diǎn)上的姓名和/或姓氏標(biāo)簽以違反這些約束,則寫入操作將失敗。

CREATE CONSTRAINT node_key_with_config ON (p:Person)
      ASSERT (p.name, p.age) IS NODE KEY
      OPTIONS {indexConfig: {`spatial.wgs-84.min`: [-100.0, -100.0], `spatial.wgs-84.max`: [100.0, 100.0]}}

(★) 在標(biāo)簽 Person 和屬性 name 和 age 上創(chuàng)建節(jié)點(diǎn)鍵約束,名稱為 node_key_with_config 并為隨附索引提供空間.wgs-84 設(shè)置。其他索引設(shè)置將具有其默認(rèn)值。

DROP CONSTRAINT uniqueness

刪除名為 uniqueness 的約束,如果約束不存在則拋出錯誤。

DROP CONSTRAINT uniqueness IF EXISTS

如果存在,則刪除名稱為 uniqueness 的約束,如果不存在,則不執(zhí)行任何操作。

表現(xiàn)

  • 盡可能使用參數(shù)而不是文字。這允許 Cypher 重用您的查詢,而不必解析和構(gòu)建新的執(zhí)行計(jì)劃。
  • 始終為可變長度模式設(shè)置上限。有可能讓查詢變得瘋狂并錯誤地觸及圖中的所有節(jié)點(diǎn)。
  • 僅返回您需要的數(shù)據(jù)。避免返回整個節(jié)點(diǎn)和關(guān)系 - 相反,選擇您需要的數(shù)據(jù)并僅返回該數(shù)據(jù)。
  • 使用PROFILE/EXPLAIN來分析查詢的性能。有關(guān)這些主題和其他主題(例如規(guī)劃器提示)的更多信息,請參閱查詢調(diào)優(yōu)。

Neo4j 多數(shù)據(jù)庫

數(shù)據(jù)庫管理

CREATE OR REPLACE DATABASE myDatabase

(★) 創(chuàng)建一個名為myDatabase 的數(shù)據(jù)庫。如果存在具有該名稱的數(shù)據(jù)庫,則刪除現(xiàn)有數(shù)據(jù)庫并創(chuàng)建新數(shù)據(jù)庫。

STOP DATABASE myDatabase

(★) 停止數(shù)據(jù)庫myDatabase。

START DATABASE myDatabase

(★)啟動數(shù)據(jù)庫myDatabase。

SHOW DATABASES

列出系統(tǒng)中的所有數(shù)據(jù)庫及其相關(guān)信息。

SHOW DATABASES
YIELD name, currentStatus
WHERE name CONTAINS 'my' AND currentStatus = 'online'

列出有關(guān)數(shù)據(jù)庫的信息,按名稱和在線狀態(tài)過濾,并按這些條件進(jìn)一步細(xì)化。

SHOW DATABASE myDatabase

列出有關(guān)數(shù)據(jù)庫 myDatabase 的信息。

SHOW DEFAULT DATABASE

列出有關(guān)默認(rèn)數(shù)據(jù)庫的信息。

SHOW HOME DATABASE

列出有關(guān)當(dāng)前用戶主數(shù)據(jù)庫的信息。

DROP DATABASE myDatabase IF EXISTS

(★) 刪除數(shù)據(jù)庫myDatabase,如果存在。

Neo4j 安全性

用戶管理

CREATE USER alice SET PASSWORD $password

創(chuàng)建一個新用戶和密碼。此密碼必須在第一次登錄時更改。

ALTER USER alice SET PASSWORD $password CHANGE NOT REQUIRED

為用戶設(shè)置新密碼。該用戶下次登錄時無需更改此密碼。

ALTER USER alice IF EXISTS SET PASSWORD CHANGE REQUIRED

如果指定的用戶存在,則強(qiáng)制該用戶在下次登錄時更改其密碼。

ALTER USER alice SET STATUS SUSPENDED

(★) 更改用戶狀態(tài)為暫停。使用 SET STATUS ACTIVE 重新激活用戶。

ALTER USER alice SET HOME DATABASE otherDb

(★) 將用戶家數(shù)據(jù)庫改為otherDb。使用 REMOVE HOME DATABASE 取消設(shè)置用戶的主數(shù)據(jù)庫并回退到默認(rèn)數(shù)據(jù)庫。

ALTER CURRENT USER SET PASSWORD FROM $old TO $new

更改登錄用戶的密碼。用戶下次登錄時無需更改此密碼。

SHOW CURRENT USER

列出當(dāng)前登錄的用戶、他們的狀態(tài)、角色以及他們是否需要更改密碼。(★) 狀態(tài)和角色僅限企業(yè)版。

SHOW USERS

列出系統(tǒng)中的所有用戶、他們的狀態(tài)、角色以及他們是否需要更改密碼。(★) 狀態(tài)和角色僅限企業(yè)版。

SHOW USERS
YIELD user, suspended
WHERE suspended = true

列出系統(tǒng)中的用戶,按名稱和狀態(tài)過濾,并根據(jù)是否暫停進(jìn)一步細(xì)化。(★) 狀態(tài)僅為企業(yè)版。

RENAME USER alice TO alice_delete

將用戶 alice 重命名為 alice_delete。

DROP USER alice_delete

刪除用戶。

(★) 角色管理

CREATE ROLE my_role

創(chuàng)建角色。

CREATE ROLE my_second_role IF NOT EXISTS AS COPY OF my_role

創(chuàng)建一個名為 my_second_role 的角色(除非它已經(jīng)存在)作為現(xiàn)有 my_role 的副本。

RENAME ROLE my_second_role TO my_other_role

將名為 my_second_role 的角色重命名為 my_other_role。

GRANT ROLE my_role, my_other_role TO alice

為用戶分配角色。

REVOKE ROLE my_other_role FROM alice

從用戶中刪除指定的角色。

SHOW ROLES

列出系統(tǒng)中的所有角色。

SHOW ROLES
YIELD role
WHERE role CONTAINS 'my'

列出角色,按角色名稱過濾,并根據(jù)名稱是否包含“我的”進(jìn)一步細(xì)化。

SHOW POPULATED ROLES WITH USERS

列出分配給系統(tǒng)中至少一個用戶的所有角色,以及分配給這些角色的用戶。

DROP ROLE my_role

刪除角色。

(★)圖讀權(quán)限

GRANT TRAVERSE ON GRAPH * NODES * TO my_role

向角色授予對所有節(jié)點(diǎn)和所有圖的遍歷權(quán)限。

DENY READ {prop} ON GRAPH foo RELATIONSHIP Type TO my_role

拒絕對角色的指定屬性、指定圖中具有指定類型的所有關(guān)系的讀取權(quán)限。

GRANT MATCH {*} ON HOME GRAPH ELEMENTS Label TO my_role

將所有屬性的讀取權(quán)限和主圖中的遍歷權(quán)限授予角色。在這里,這兩種權(quán)限都適用于圖中具有指定標(biāo)簽/類型的所有節(jié)點(diǎn)和關(guān)系。

(★) Graph寫權(quán)限

GRANT CREATE ON GRAPH * NODES Label TO my_role

向角色授予對所有圖中具有指定標(biāo)簽的所有節(jié)點(diǎn)的創(chuàng)建權(quán)限。

DENY DELETE ON GRAPH neo4j TO my_role

拒絕對角色的指定圖中的所有節(jié)點(diǎn)和關(guān)系的刪除權(quán)限。

REVOKE SET LABEL Label ON GRAPH * FROM my_role

將所有圖上指定標(biāo)簽的 set label 權(quán)限撤消給角色。

GRANT REMOVE LABEL * ON GRAPH foo TO my_role

將指定圖上所有標(biāo)簽的刪除標(biāo)簽權(quán)限授予角色。

DENY SET PROPERTY {prop} ON GRAPH foo RELATIONSHIPS Type TO my_role

拒絕將指定屬性、指定圖中具有指定類型的所有關(guān)系的屬性權(quán)限設(shè)置為角色。

GRANT MERGE {*} ON GRAPH * NODES Label TO my_role

向角色授予對所有屬性、所有圖中具有指定標(biāo)簽的所有節(jié)點(diǎn)的合并權(quán)限。

REVOKE WRITE ON GRAPH * FROM my_role

撤銷角色對所有圖的寫入權(quán)限。

DENY ALL GRAPH PRIVILEGES ON GRAPH foo TO my_role

拒絕角色對指定圖的所有圖特權(quán)特權(quán)。

(★) 展示特權(quán)

SHOW PRIVILEGES AS COMMANDS

將系統(tǒng)中的所有權(quán)限列為 Cypher 命令。

SHOW PRIVILEGES

列出系統(tǒng)中的所有權(quán)限以及分配給它們的角色。

SHOW PRIVILEGES
YIELD role, action, access
WHERE role = 'my_role'

列出有關(guān)權(quán)限的信息,按角色、操作和訪問進(jìn)行過濾,并按角色名稱進(jìn)一步細(xì)化。

SHOW ROLE my_role PRIVILEGES AS COMMANDS

列出分配給角色的所有權(quán)限作為 Cypher 命令。

SHOW ROLE my_role, my_second_role PRIVILEGES AS COMMANDS

列出分配給多個角色中的每個角色的所有權(quán)限作為 Cypher 命令。

SHOW USER alice PRIVILEGES AS COMMANDS

列出用戶的所有權(quán)限,以及他們作為 Cypher 命令分配給的角色。

SHOW USER PRIVILEGES AS COMMANDS

列出當(dāng)前登錄用戶的所有權(quán)限,以及他們作為 Cypher 命令分配的角色。

(★) 數(shù)據(jù)庫權(quán)限

GRANT ACCESS ON DATABASE * TO my_role

向角色授予訪問和運(yùn)行針對所有數(shù)據(jù)庫的查詢的權(quán)限。

GRANT START ON DATABASE * TO my_role

向角色授予啟動所有數(shù)據(jù)庫的權(quán)限。

GRANT STOP ON DATABASE * TO my_role

向角色授予停止所有數(shù)據(jù)庫的權(quán)限。

GRANT CREATE INDEX ON DATABASE foo TO my_role

向角色授予在指定數(shù)據(jù)庫上創(chuàng)建索引的權(quán)限。

GRANT DROP INDEX ON DATABASE foo TO my_role

向角色授予刪除指定數(shù)據(jù)庫上的索引的權(quán)限。

GRANT SHOW INDEX ON DATABASE * TO my_role

授予權(quán)限以向角色顯示所有數(shù)據(jù)庫上的索引。

DENY INDEX MANAGEMENT ON DATABASE bar TO my_role

拒絕為角色創(chuàng)建和刪除指定數(shù)據(jù)庫上的索引的特權(quán)。

GRANT CREATE CONSTRAINT ON DATABASE * TO my_role

向角色授予在所有數(shù)據(jù)庫上創(chuàng)建約束的權(quán)限。

DENY DROP CONSTRAINT ON DATABASE * TO my_role

拒絕將所有數(shù)據(jù)庫上的約束刪除到某個角色的權(quán)限。

DENY SHOW CONSTRAINT ON DATABASE foo TO my_role

拒絕特權(quán)以向角色顯示對指定數(shù)據(jù)庫的約束。

REVOKE CONSTRAINT ON DATABASE * FROM my_role

撤消授予和拒絕的權(quán)限以從角色創(chuàng)建和刪除對所有數(shù)據(jù)庫的約束。

GRANT CREATE NEW LABELS ON DATABASE * TO my_role

向角色授予在所有數(shù)據(jù)庫上創(chuàng)建新標(biāo)簽的權(quán)限。

DENY CREATE NEW TYPES ON DATABASE foo TO my_role

拒絕在指定數(shù)據(jù)庫上為角色創(chuàng)建新關(guān)系類型的特權(quán)。

REVOKE GRANT CREATE NEW PROPERTY NAMES ON DATABASE bar FROM my_role

從角色撤消在指定數(shù)據(jù)庫上創(chuàng)建新屬性名稱的授予權(quán)限。

GRANT NAME MANAGEMENT ON HOME DATABASE TO my_role

向角色授予在主數(shù)據(jù)庫上創(chuàng)建標(biāo)簽、關(guān)系類型和屬性名稱的權(quán)限。

GRANT ALL ON DATABASE baz TO my_role

向角色授予訪問、創(chuàng)建和刪除索引和約束、在指定數(shù)據(jù)庫上創(chuàng)建新標(biāo)簽、類型和屬性名稱的權(quán)限。

GRANT SHOW TRANSACTION (*) ON DATABASE foo TO my_role

授予權(quán)限以列出來自指定數(shù)據(jù)庫上所有用戶的事務(wù)和查詢給角色。

DENY TERMINATE TRANSACTION (user1, user2) ON DATABASES * TO my_role

拒絕從所有數(shù)據(jù)庫上的 user1 和 user2 到角色終止事務(wù)和查詢的特權(quán)。

REVOKE GRANT TRANSACTION MANAGEMENT ON HOME DATABASE FROM my_role

撤消授予的權(quán)限,以從角色中列出和終止主數(shù)據(jù)庫上所有用戶的事務(wù)和查詢。

(★) 角色管理權(quán)限

GRANT CREATE ROLE ON DBMS TO my_role

授予角色創(chuàng)建角色的權(quán)限。

GRANT RENAME ROLE ON DBMS TO my_role

授予將角色重命名為角色的權(quán)限。

GRANT DROP ROLE ON DBMS TO my_role

授予角色刪除角色的權(quán)限。

DENY ASSIGN ROLE ON DBMS TO my_role

拒絕為用戶分配角色的權(quán)限。

DENY REMOVE ROLE ON DBMS TO my_role

拒絕將角色從用戶移除到角色的權(quán)限。

REVOKE DENY SHOW ROLE ON DBMS FROM my_role

撤銷被拒絕的權(quán)限以顯示角色中的角色。

GRANT ROLE MANAGEMENT ON DBMS TO my_role

授予角色管理角色的所有權(quán)限。

(★) 用戶管理權(quán)限

GRANT CREATE USER ON DBMS TO my_role

授予為角色創(chuàng)建用戶的權(quán)限。

GRANT RENAME USER ON DBMS TO my_role

授予將用戶重命名為角色的權(quán)限。

DENY ALTER USER ON DBMS TO my_role

拒絕將用戶更改為角色的權(quán)限。

REVOKE SET PASSWORDS ON DBMS FROM my_role

撤銷授予和拒絕的權(quán)限以更改角色的用戶密碼。

REVOKE GRANT SET USER STATUS ON DBMS FROM my_role

撤消授予的權(quán)限以從角色更改用戶的帳戶狀態(tài)。

GRANT SET USER HOME DATABASE ON DBMS TO my_role

將權(quán)限更改用戶的主數(shù)據(jù)庫授予角色。

GRANT DROP USER ON DBMS TO my_role

授予角色刪除用戶的權(quán)限。

REVOKE DENY SHOW USER ON DBMS FROM my_role

撤銷被拒絕的權(quán)限以顯示角色中的用戶。

GRANT USER MANAGEMENT ON DBMS TO my_role

將管理用戶的所有權(quán)限授予角色。

(★) 數(shù)據(jù)庫管理權(quán)限

GRANT CREATE DATABASE ON DBMS TO my_role

授予角色創(chuàng)建數(shù)據(jù)庫的權(quán)限。

REVOKE DENY DROP DATABASE ON DBMS FROM my_role

撤銷被拒絕的權(quán)限以從角色中刪除數(shù)據(jù)庫。

DENY DATABASE MANAGEMENT ON DBMS TO my_role

拒絕一個角色管理數(shù)據(jù)庫的所有權(quán)限。

(★)權(quán)限管理權(quán)限

GRANT SHOW PRIVILEGE ON DBMS TO my_role

授予權(quán)限以向角色顯示權(quán)限。

DENY ASSIGN PRIVILEGE ON DBMS TO my_role

拒絕將權(quán)限分配給角色的權(quán)限。

REVOKE GRANT REMOVE PRIVILEGE ON DBMS FROM my_role

撤消授予的權(quán)限以從角色的角色中刪除權(quán)限。

REVOKE PRIVILEGE MANAGEMENT ON DBMS FROM my_role

從角色撤銷所有授予和拒絕的管理權(quán)限的權(quán)限。

(★)DBMS權(quán)限

GRANT ALL ON DBMS TO my_role

授予對角色執(zhí)行所有角色管理、用戶管理、數(shù)據(jù)庫管理和權(quán)限管理的權(quán)限。

★注意

(★) Neo4j 企業(yè)版提供的功能。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號