增删改查
1. 创建(Create)
创建节点
CREATE (n:Label {name: 'Node1', age: 25})n是节点的变量名,用于后续引用。Label是节点的标签,用于分类。{name: 'Node1', age: 25}是节点的属性集合。
创建关系
CREATE (a:Person {name: 'Alice'})-[:KNOWS]->(b:Person {name: 'Bob'})(a:Person {name: 'Alice'})和(b:Person {name: 'Bob'})是两个节点。[:KNOWS]是关系的类型。-[:KNOWS]->表示从节点a到节点b的有向关系。
创建多个节点和关系
CREATE (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}), (a)-[:KNOWS]->(b)- 同时创建多个节点和关系。
2. 查询(Read)
查询所有节点
MATCH (n) RETURN nMATCH (n)匹配所有节点。RETURN n返回匹配的节点。
查询特定标签的节点
MATCH (n:Person) RETURN nMATCH (n:Person)匹配所有标签为Person的节点。
查询节点的属性
MATCH (n:Person) RETURN n.name, n.age- 返回节点的
name和age属性。
查询关系
MATCH (a)-[r:KNOWS]->(b) RETURN a, r, bMATCH (a)-[r:KNOWS]->(b)匹配从节点a到节点b的KNOWS关系。RETURN a, r, b返回节点a、关系r和节点b。
3. 更新(Update)
更新节点属性
MATCH (n:Person {name: 'Alice'}) SET n.age = 26MATCH (n:Person {name: 'Alice'})匹配名为Alice的节点。SET n.age = 26更新节点的age属性。
添加或更新属性
MATCH (n:Person {name: 'Alice'}) SET n += {age: 26, gender: 'Female'}SET n += {age: 26, gender: 'Female'}添加或更新节点的属性。
更新关系属性
MATCH (a)-[r:KNOWS]->(b) SET r.since = 2020MATCH (a)-[r:KNOWS]->(b)匹配关系。SET r.since = 2020更新关系的属性。
4. 删除(Delete)
删除节点
MATCH (n:Person {name: 'Alice'}) DELETE nMATCH (n:Person {name: 'Alice'})匹配节点。DELETE n删除节点。
删除关系
MATCH (a)-[r:KNOWS]->(b) DELETE rMATCH (a)-[r:KNOWS]->(b)匹配关系。DELETE r删除关系。
删除节点及其关系
MATCH (n:Person {name: 'Alice'}) DETACH DELETE nDETACH DELETE会删除节点及其所有关系。
5. 其他常用操作
条件查询
MATCH (n:Person) WHERE n.age > 25 RETURN nWHERE用于添加过滤条件。
聚合查询
MATCH (n:Person) RETURN count(n)count(n)返回匹配节点的数量。
希望这些内容对你写笔记有所帮助!如果需要更详细的内容或示例,可以随时告诉我。
新增用户
CREATE USER name [IF NOT EXISTS]
SET [PLAINTEXT | ENCRYPTED] PASSWORD 'password'
[[SET PASSWORD] CHANGE [NOT] REQUIRED]
[SET STATUS {ACTIVE | SUSPENDED}]
[SET HOME DATABASE name]全文索引
涉及不使用正则方式的文本模糊查询 全文索引
CREATE FULLTEXT INDEX namesAndTeams FOR (n:Employee|Manager) ON EACH [n.name, n.team]
OPTIONS {
indexConfig: {
`fulltext.analyzer`: 'cjk',
}
}创建索引
// chinese-japanese-korean full text index
CREATE FULLTEXT INDEX representation_cjk FOR (re:Representation_cjk) ON EACH [re.value]
OPTIONS {
indexConfig: {
`fulltext.analyzer`: 'cjk'
}
};
// english full text index
CREATE FULLTEXT INDEX representation_eng FOR (re:Representation_eng) ON EACH [re.value]
OPTIONS {
indexConfig: {
`fulltext.analyzer`: 'english'
}
};
CREATE INDEX code FOR (co:Code) ON (co.value, co.definition_set, co.coding_set);- 注意:不同语言要指定不同analyzer以保证最佳index
查询
call db.index.fulltext.queryNodes(index_name,string_to_query,{limit:[Int], skip: [Int], analyzer:[analyzer_name]}) yield node, score- 第三个参数option部分
- limit:数量限制
- skip:跳过top N
- analyzer:用指定分析器
效率问题
- 用apoc iterate
- 减少merge,用create
- 能在数据预处理时修正的东西就提前修正,cypher只保留入库功能,尽量不要做条件判断、新的查询等