大数据学习
bigdata learning
Toggle navigation
大数据学习
主页
openGauss数据库
Flume
MongoDB
Hadoop
数据库实验
Kafka
Zookeeper
Hbase
Manual
Spark
Neo4j
InfluxDB
RabbitMQ
Flink
About Me
归档
标签
12-Neo4j-MERGE-NULL-IN
无
2024-04-17 09:59:47
32
0
0
bigdata
# MERGE语法 * 创建节点,关系和属性 * 为从数据库检索数据 MERGE 命令是 CREATE 命令和 MATCH 命令的组合。 ``` MERGE = CREATE + MATCH ``` Neo4j CQL MERGE 命令在图中搜索给定模式,如果存在,则返回结果 如果它不存在于图中,则它创建新的节点 / 关系并返回结果。 Neo4j CQL MERGE 语法 ``` MERGE (<node-name>:<label-name> { <Property1-name>:<Pro<rty1-Value> ..... <Propertyn-name>:<Propertyn-Value> }) ``` 语法说明: <table><tbody><tr><th>S.No.</th><th>语法元素</th><th>描述</th></tr><tr><td>1</td><td>MERGE</td><td>它是一个 Neo4j CQL 关键字。</td></tr><tr><td>2</td><td><node-name></td><td>它是节点或关系的名称。</td></tr><tr><td>3</td><td><label-name></td><td>它是节点或关系的标签名称。</td></tr><tr><td>4</td><td><property_name></td><td>它是节点或关系的属性名称。</td></tr><tr><td>5</td><td><property_value></td><td>它是节点或关系的属性值。</td></tr><tr><td>6</td><td>:</td><td>使用 colon(:) 运算符来分隔节点或关系的属性名称和值。</td></tr></tbody></table> **注意 -** Neo4j CQL MERGE 命令语法与 CQL CREATE 命令类似。 我们将使用这两个命令执行以下操作 - * 创建具有一个属性的配置文件节点:Id,名称 * 创建具有相同属性的同一个 Profile 节点:Id,Name * 检索所有 Profile 节点详细信息并观察结果 我们将使用 CREATE 命令执行这些操作 # 示例 此示例通过使用 CREATE,MATCH 和 RETURN 命令创建 Google + 个人资料,执行上述所有操作。 ### 操作(1):创建具有属性:Id,Name 的 Profile 节点 **步骤 1** - 打开 Neo4j 数据浏览器 **** **步骤 2** - 在数据浏览器上键入以下命令 ``` CREATE (gp1:GoogleProfile1 {Id: 201401, Name:"Apple"}) ``` **** 步骤 3 - 点击 “执行” 按钮并观察结果。  如果我们观察到成功消息,它已经向 GoogleProfile1 节点添加了两个属性。 ### 操作(2):创建具有相同属性的同一个 Profile 节点:Id,Name。 **步骤 1** - 打开 Neo4j 的数据浏览器 **步骤 2** - 输入在数据浏览器下面的命令 ``` CREATE (gp1:GoogleProfile1 {Id: 201401, Name:"Apple"}) ``` **** 步骤 3 - 点击 “执行” 按钮并观察结果。  如果我们观察到成功消息,它已经向 GoogleProfile1 节点添加了两个属性。 ### 操作(3):检索所有 Profile 节点详细信息并观察结果。 **步骤 1** - 打开 Neo4j 数据浏览器 **步骤 2** - 在数据浏览器上键入以下命令 ``` MATCH (gp1:GoogleProfile1) RETURN gp1.Id,gp1.Name ``` **** **步骤 3** - 点击 “执行” 按钮并观察结果。  如果我们观察到上面的查询结果,它显示 2 行重复的值。 CQL CREATE 命令检查此节点是否可用,它只是在数据库中创建新节点。 通过观察这些结果,我们可以说 CREATE 命令总是向数据库添加新的节点。 ## 示例 此示例通过使用 MERGE 和 RETURN 命令创建 Google + 个人资料,执行相同的上述操作。 ### 操作(1):创建具有属性:Id,Name 的 Profile 节点 **步骤 1** - 打开 Neo4j 数据浏览器 **步骤 2** - 在数据浏览器上键入以下命令 ``` MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"}) ``` **** **步骤 3** - 点击 “执行” 按钮并观察结果。  如果我们观察到成功消息,它已经向 GoogleProfile1 节点添加了两个属性。 ### 操作(2):创建具有相同属性的同一个 Profile 节点:Id,Name。 **步骤 1** - 打开 Neo4j 数据浏览器 **步骤 2** - 在数据浏览器上键入以下命令 ``` MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"}) ``` **** **步骤 3** - 点击 “执行” 按钮并观察结果。  如果我们观察到成功消息,它已经向 GoogleProfile1 节点添加了两个属性。 ### 操作(3):检索所有 Profile 节点详细信息并观察结果 **步骤 1** - 打开 Neo4j 数据浏览器 **步骤 2** - 在数据浏览器上键入以下命令 ``` MATCH (gp2:GoogleProfile2) RETURN gp2.Id,gp2.Name ``` **** **步骤 3** - 点击 “执行” 按钮并观察结果。  如果我们观察上面的查询结果,它只显示一行,因为 CQL MERGE 命令检查该节点在数据库中是否可用。 如果它不存在,它创建新节点。 否则,它不创建新的。 通过观察这些结果,我们可以说,CQL MERGE 命令将新的节点添加到数据库,只有当它不存在。 # NULL值 Neo4j CQL 将空值视为对节点或关系的属性的缺失值或未定义值。 当我们创建一个具有现有节点标签名称但未指定其属性值的节点时,它将创建一个具有 NULL 属性值的新节点。 让我们用一个例子来看这个。 ### 例如: 此示例演示 CREATE 命令如何将 NULL 值设置为未定义属性。 如何检索没有 NULL 行的节点的所有行。 **步骤 1** - 打开 Neo4j 数据浏览器 **** **步骤 2** - 在数据浏览器中的美元提示符下键入以下命令。 ``` MATCH (e:Employee) RETURN e.id,e.name,e.sal,e.deptno ``` **** 步骤 3 - 点击执行按钮,观察结果。  这里观察所有 Employee 节点不包含 NULL 属性值。 **步骤 4** - 键入以下命令,然后单击执行按钮 ``` CREATE (e:Employee) ```  如果我们观察到上面的成功消息,它没有创建任何属性到 Employee 节点。 **步骤 5** - 键入以下命令,然后单击执行按钮 ``` MATCH (e:Employee) RETURN e.id,e.name,e.sal,e.deptno ```  如果我们观察这些结果,则以前的 CREATE 命令通过将其所有属性值设置为 NULL 来插入 Employee 节点。 **步骤 6** - 键入以下命令并单击执行按钮 ``` MATCH (e:Employee) WHERE e.id IS NOT NULL RETURN e.id,e.name,e.sal,e.deptno ```  如果我们观察这些结果,它不返回 NULL 值行,因为我们提供了一个 WHERE 子句来过滤该行,即 Id 属性不应该包含 NULL 值。 ``` WHERE IS NOT NULL ``` 这里我们使用 IS NOT 运算符来过滤 NULL 行。 **步骤 7** - 键入以下命令,然后单击执行按钮 ``` MATCH (e:Employee) WHERE e.id IS NULL RETURN e.id,e.name,e.sal,e.deptno ```  如果我们观察这些结果,它只返回 NULL 值行,因为我们提供了一个 WHERE 子句来检查 ID 值为 NULL。 ``` WHERE IS NULL ``` 这里我们使用 IS 操作符来仅返回 NULL 行。 # IN语法 与 SQL 一样,Neo4j CQL 提供了一个 IN 运算符,以便为 CQL 命令提供值的集合。 ``` IN[<Collection-of-values>] ``` 语法说明: <table><tbody><tr><th>S.No.</th><th>语法元素</th><th>描述</th></tr><tr><td>1。</td><td>IN</td><td>它是一个 Neo4j CQL 关键字。</td></tr><tr><td>2。</td><td>[</td><td>它告诉 Neo4j CQL,一个值的集合的开始。</td></tr><tr><td>3。</td><td>]</td><td>它告诉 Neo4j CQL,值集合的结束。</td></tr><tr><td>4。</td><td><Collection-of-values></td><td>它是由逗号运算符分隔的值的集合。</td></tr></tbody></table> 让我们用一个例子来研究一下。 ### 例如: 此示例演示如何使用 IN 运算符检索 Employee 节点详细信息。 **步骤 1** - 打开 Neo4j 数据浏览器 **** 步骤 2 - 在数据浏览器中的 dollar 提示符下键入以下命令。 ``` MATCH (e:Employee) RETURN e.id,e.name,e.sal,e.deptno ``` **** 步骤 3 - 点击执行按钮,观察结果。  我们可以观察到这个查询返回 4 行。 **步骤 4** - 键入以下命令,然后单击执行按钮。 ``` MATCH (e:Employee) WHERE e.id IN [123,124] RETURN e.id,e.name,e.sal,e.deptno ```  此查询仅返回在 IN 运算符中指定的 id 匹配的两行。
上一篇:
12-MongoDB案例-JavaApi实践
下一篇:
12-Zookeeper分布式锁
文档导航