Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nested ARANGODB AQL不可能将()与嵌套对象匹配_Nested_Match_Arangodb_Aql - Fatal编程技术网

Nested ARANGODB AQL不可能将()与嵌套对象匹配

Nested ARANGODB AQL不可能将()与嵌套对象匹配,nested,match,arangodb,aql,Nested,Match,Arangodb,Aql,我使用MATCHES()AQL函数在arango数据库中搜索与示例匹配的条目。这个特性对于简单的例子很好,但我不能让它在嵌套特性中正常工作。见示例: RETURN MATCHES( { "a" : { "c" : 1 }, "b" : 1 }, { "a" : { "c" : 1 } }, false ) 这将返回true,但是如果我尝试: RETURN MATCHES( { "a&q

我使用
MATCHES()
AQL函数在arango数据库中搜索与示例匹配的条目。这个特性对于简单的例子很好,但我不能让它在嵌套特性中正常工作。见示例:

RETURN MATCHES(
{ "a" : { "c" : 1 }, "b" : 1 },
{ "a" : { "c" : 1 } },
false
)
这将返回
true
,但是如果我尝试:

RETURN MATCHES(
{ "a" : { "c" : 1, "b" : 1 }},
{ "a" : { "c" : 1 } },
false
)
它返回false!!(我希望返回true)

我在
querybyexample
一节中了解到了这一点

他们的解决方案是使用点符号,但它在AQL中不起作用

以他们为例:

RETURN MATCHES(
{ "a" : { "c" : 1, "b" : 1 } },
{ "a.c" : 1 },
false
)
返回
false
(我希望返回true)

那么,如何对嵌套属性使用
MATCHES()

仅供参考:我使用arangodb v3.5.5-1

澄清: 我想通过给出
{a:{c:1,b:1}}
作为示例来获得
{a:{c:1}}
的匹配


我已经在ArangoDB存储库中发布了这个问题:

匹配
比较属性-它不关心属性的类型,因此如果您试图匹配嵌套对象,它们必须具有相同的属性/值;因此,您不能对任意深度的结构进行覆盖并检查其对应关系

在给定的示例中,您可以使用
LET
选择子结构,并对其使用
匹配

LET doc = { "a" : { "c" : 1, "b" : 1 }}
LET a = doc.a

RETURN MATCHES(
  a,
  { "c": 1}
)
要利用arangojs功能使用路径窥视结构,您可以编写一个用户函数,使用示例查询并从AQL()调用该函数


注:您的语言的arangodb客户端库应该提供注册用户函数的方便访问(例如,
arangodb php
中的
class AqlUserFunctions
)。

匹配
比较属性-它不关心属性的类型,因此如果您试图匹配嵌套对象,它们必须具有相同的属性/值;因此,您不能对任意深度的结构进行覆盖并检查其对应关系

在给定的示例中,您可以使用
LET
选择子结构,并对其使用
匹配

LET doc = { "a" : { "c" : 1, "b" : 1 }}
LET a = doc.a

RETURN MATCHES(
  a,
  { "c": 1}
)
要利用arangojs功能使用路径窥视结构,您可以编写一个用户函数,使用示例查询并从AQL()调用该函数


注:您的语言的arangodb客户端库应提供方便的访问权限,以注册用户函数(例如,
arangodb php
中的
class AqlUserFunctions
)。

您是否可以编辑您的问题以包含您希望它找到的文档?我已进行了编辑,因此这三个示例包含相同的示例类型。这里的“问题”是已知的。此解决方案与collection.byExample()函数一起使用,但与原始AQL不一起使用,我不知道如何使用AQL。您可以编辑您的问题以包含您希望它找到的文档吗?我已进行编辑,因此这三个示例包含相同的示例类型。这里的“问题”是已知的,这个解决方案使用collection.byExample()函数,但不使用原始AQL,我不知道如何使用AQL