示例
根据操作类型选择实体
可以过滤更改以仅返回创建、更新或删除,而不管受影响的实体是节点还是关系。
查询
CALL db.cdc.query($previousChangeId, [{
select: "e",
operation: "c"
}])
根据已更改的属性选择实体
可以过滤更改以仅包括其中某些属性已更改的更改。如果提供了属性列表,则所有提供的属性都必须在同一更改事件中更改。
查询其中特定属性已更改的实体
CALL db.cdc.query($previousChangeId, [{
select: "e",
changesTo: ["name"]
}])
查询其中特定属性已更改的节点
CALL db.cdc.query($previousChangeId, [{
select: "n",
changesTo: ["name"]
}])
查询其中特定属性已更改的关系
CALL db.cdc.query($previousChangeId, [{
select: "r",
changesTo: ["registerId"]
}])
根据更改元数据选择实体
可以过滤更改以仅包括其中事务匹配特定元数据属性的更改。
查询特定用户更改的实体
CALL db.cdc.query($previousChangeId, [{
select: "e",
executingUser: "alice"
}])
查询由模拟其他用户的用户更改的节点
CALL db.cdc.query($previousChangeId, [{
select: "n",
authenticatedUser: "alice",
executingUser: "bob"
}])
查询在事务上设置特定元数据属性时更改的关系
CALL db.cdc.query($previousChangeId, [{
select: "r",
txMetadata: {
correlationId: 123456789
}
}])
按 elementId 选择节点/关系
可以将更改过滤到特定的 elementId。当您对对特定节点或关系所做的更改感兴趣时,这可能很有用。有关获取现有实体的 elementId 的更多信息,请参阅Cypher 手册→ elementId。避免使用 elementId 而使用业务键,请参阅elementIds 和关键属性的作用了解更多详细信息。
查询节点更改
CALL db.cdc.query($previousChangeId, [{
select: "n",
elementId: "4:e239be76-c7e8-43d8-aa03-567de592f426:0"
}])
查询关系更改
CALL db.cdc.query($previousChangeId, [{
select: "r",
elementId: "5:a439fca3-d8b3-35f0-aa49-987fa112f993:0"
}])
按键选择实体
可以过滤节点更改以匹配指定的关键属性。提供的关键属性需要完全匹配实体上的相应节点键或关系键。请参阅elementIds 和关键属性的作用了解更多详细信息。
按键查询节点更改
CALL db.cdc.query($previousChangeId, [{
select: "n",
key: {
name: "Kevin",
surname: "Bacon"
}
}])
按键查询关系更改
CALL db.cdc.query($previousChangeId, [{
select: "r",
key: {
registerId: 1001
}
}])
如果在捕获实体上的更改后添加了相关约束,则不会追溯更新先前的更改事件,并且不匹配键选择器。 |
按标签选择节点
可以将节点更改过滤到特定标签。
查询
CALL db.cdc.query($previousChangeId, [{
select: "n",
labels: ["Person", "Actor"]
}])
以上查询仅返回更改前或更改后都具有**两个**标签的节点上的更改。为了获取具有任一标签的节点上的更改,必须指定两个单独的选择器。有关详细信息,请参阅组合选择器。 |
按类型选择关系
可以将关系更改过滤到特定类型。
查询
CALL db.cdc.query($previousChangeId, [{
select: "r",
type: "ACTED_IN"
}])
按起始/结束节点选择关系
可以根据关系的起始和结束节点选择关系更改。
查询具有特定标签的起始节点的关系
CALL db.cdc.query($previousChangeId, [{
select: "r",
start: {
labels: ["Person"]
}
}])
查询特定标签之间的关系
CALL db.cdc.query($previousChangeId, [{
select: "r",
start: {
labels: ["Person"]
},
end: {
labels: ["Movie"]
}
}])
查询特定标签之间且具有特定类型的关系
CALL db.cdc.query($previousChangeId, [{
select: "r",
type: "ACTED_IN",
start: {
labels: ["Person"]
},
end: {
labels: ["Movie"]
}
}])
查询涉及特定节点的关系
CALL db.cdc.query($previousChangeId, [{
select: "r",
start: {
labels: ["Person"],
key: {
name: "john",
surname: "doe"
}
}
}, {
select: "r",
end: {
labels: ["Person"],
key: {
name: "john",
surname: "doe"
}
}
}])
查询特定标签和类型的节点和关系
CALL db.cdc.query($previousChangeId, [{
select: "n",
labels: ["Person"]
}, {
select: "n",
labels: ["Movie"]
}, {
select: "r",
type: "ACTED_IN",
start: {
labels: ["Person"]
},
end: {
labels: ["Movie"]
}
}, {
select: "r",
type: "DIRECTED",
start: {
labels: ["Person"]
},
end: {
labels: ["Movie"]
}
}])