当前位置: 首页 > 知识库问答 >
问题:

外部属性值的密码查询

强硕
2023-03-14

在我们的数据模型中,我们将一些域实体值外部化到外部节点中。服务对象的模型如下所示:

ref=node(0), 
ref<-[:SERVICE]-subRefNode<-[:SERVICE]-aService-[:HAS_PROPERTY_VALUE]->propValueNode-[:IS_OF_TYPE]->propDefType,
ref<-[:SERVICE]-subRefNode-[:HAS_PROPERTY]->propDefType

节点subRefNode拥有与所有服务的关系。服务的所有可能属性都通过ref定义

所以我的问题是,我如何得到一个空的proproValueNode.value的节点,以及那些还没有属性的ValueNode的节点?我想到了一些像...

START ref=node(0) MATCH ref<-[:SERVICE]-subRef, aService-[pvRel?:HAS_PROPERTY_VALUE]->propValueNode-[pdRel:IS_OF_TYPE]->propDef<-[:HAS_PROPERTY]-subRef<-[:SERVICE]-aService WHERE (pvRel IS NOT NULL AND propDef.name = 'comment' AND propValueNode.value=~"^$") OR (pvRel IS NULL AND pdRel IS NULL AND propDef.name="comment") RETURN DISTINCT aService.debug

http://console.neo4j.org/r/7zeoay

...但是这错过了那些没有ProProValueNode的。任何提示都值得赞赏!

你好,安迪

如果http://console.neo4j.org/r/7zeoay不再有效,以下是初始图形设置:

start _0 = node(0) with _0 
create
(_1  {type:"SubReferenceNode", name:"SubRef"}),

(_2  {type:"Service", debug:"S0 empty value"}),
(_3  {type:"Service", debug:"S1 missing value node"}),
(_4  {type:"Service", debug:"S2 with value"}),

(_5  {type:"PropertyDefintion", name:"comment"}),
(_6  {type:"PropertyDefintion", name:"name"}),

(_7  {type:"PropertyValue", value:"S0 empty value"}),
(_8  {type:"PropertyValue", value:"S1 missing value node"}),
(_9 {type:"PropertyValue", value:"S2 with value"}),

(_10  {type:"PropertyValue", value:""}),
(_11 {type:"PropertyValue", value:"This is a comment"}),

_0<-[:SERVICE]-_1,
_1<-[:SERVICE]-_2,
_1<-[:SERVICE]-_3,
_1<-[:SERVICE]-_4,

_1-[:HAS_PROPERTY]->_5,
_1-[:HAS_PROPERTY]->_6,

_2-[:HAS_PROPERTY_VALUE]->_7,
_7-[:IS_OF_TYPE]->_6,
_3-[:HAS_PROPERTY_VALUE]->_8,
_8-[:IS_OF_TYPE]->_6,
_4-[:HAS_PROPERTY_VALUE]->_9,
_9-[:IS_OF_TYPE]->_6,

_2-[:HAS_PROPERTY_VALUE]->_10,
_10-[:IS_OF_TYPE]->_5,
_4-[:HAS_PROPERTY_VALUE]->_11,
_11-[:IS_OF_TYPE]->_5    

共有1个答案

章昆琦
2023-03-14

您可以组合两个查询,一个是返回具有空属性值的服务“注释”,另一个是返回没有属性值的服务“注释”,换句话说,没有服务属性值的类型为"注释"。

START ref=node(0) 
MATCH ref<-[:SERVICE]-subRef, aService-[pvRel?:HAS_PROPERTY_VALUE]->propValueNode-[pdRel:IS_OF_TYPE]->propDef<-[:HAS_PROPERTY]-subRef<-[:SERVICE]-aService 
WHERE (pvRel IS NOT NULL AND propDef.name = 'comment' AND propValueNode.value=~"^$") 
RETURN DISTINCT aService.debug
UNION
START ref=node(0)
MATCH ref<-[:SERVICE]-subRef, aService-[pvRel:HAS_PROPERTY_VALUE]->propValueNode-[pdRel:IS_OF_TYPE]->propDef<-[:HAS_PROPERTY]-subRef<-[:SERVICE]-aService
with aService, collect(propDef.name) as propNames
WHERE NONE( propName in propNames where propName = 'comment')
RETURN DISTINCT aService.debug

不使用“UNION”子句的替代解决方案是获取每个服务的所有值节点,并仅返回其值不是“comment”类型的服务,或者有一个“comment”类型的值且该值为空的服务,如下面的“Where”子句所示,

START ref=node(0) 
MATCH ref<-[:SERVICE]-subRef, aService-[pvRel:HAS_PROPERTY_VALUE]->propValueNode-[pdRel?:IS_OF_TYPE]->propDef<-[:HAS_PROPERTY]-subRef<-[:SERVICE]-aService 
WHERE propDef.name = 'comment' 
WITH aService, collect(propValueNode) AS valueNodes, propDef 
WHERE NONE (v IN valueNodes 
            WHERE v-[:IS_OF_TYPE]->propDef) OR SINGLE (v IN valueNodes 
                                                       WHERE v.value=~"^$" AND v-[:IS_OF_TYPE]->propDef) 
RETURN aService.debug 
 类似资料:
  • 我有一个域类,它具有名称为“alias”的属性,它是一个字符串的arraylist,如下所示: alias包含以下值:{“John Doe”、“Alex Smith”、“Greg Walsh”} 我希望能够使用如下所示的存储库查询进行类似“I saw Smith Today”的查询,并获得数组值输出“Alex Smith”: 我想做一个输入查询子字符串匹配的数组值。 例如:输入查询:“我今天看到史

  • 我知道有很多关于这个的线程,但还没有一个解决我的问题。我有一个在Eclipse中运行的Spring Boot应用程序,我将参数外部化,以便部署到外部Tomcat并使属性远离战争。我将application.properties从src/main/Resources移至APP_ROOT/config。在catalina.sh,我添加了这个: 外部构建工作正常;然而,现在它不再从日食开始。我通过在启动

  • 我希望在运行时传递变量,一旦war文件部署在tomcat上。如何使用classplath中的application.properties以及另一个属性文件ex。abcd.properties位于specific directory.am基本上希望设置额外的类路径,并从该路径中的属性文件中读取值,以及war部署的默认类路径位置。 我使用Spring boot。其中一种方法是将所有属性传递到数据库端,

  • 我有一个neo4j数据库,里面有一些数据。大多数节点都有一个属性,但不是所有节点都有;我想构造一个Cypher查询来匹配并返回所有不匹配的查询。 我已经尝试了以下所有方法,但它们都给出了0个结果: 但是,我至少有一个节点没有指定属性,我可以通过 检查结果视图中的节点,或者注意到 返回。 如何匹配没有属性的所有节点?

  • 我正在通过perl脚本使用net::SFTP::foreign模块连接到SFTP服务器,示例命令如下: net::sftp::foreign->new($host,端口=>'22',后端=>'NET_SSH2') null

  • 问题内容: 在Swift中,定义公共模式的常规方式是什么,在该模式中,属性是外部只读的,但可以由拥有该属性的类(和子类)在内部进行修改。 在Objective-C中,有以下选项: 在接口中将该属性声明为只读,并使用类扩展名在内部访问该属性。这是基于消息的访问,因此可以很好地与KVO,原子性等配合使用。 在接口中将该属性声明为只读,但在内部访问后备ivar。由于对ivar的默认访问受到保护,因此在类