如何在Couchbase中查询嵌套数组?
嵌套数组查询的正确写法
你的原查询语句出错是因为内层引用有误,在内层ANY field SATISFIES的上下文里,field已经是element.fields数组中的单个对象,不需要再通过element来访问它的属性。
正确的查询语句(针对单独的$fieldlog数组)
ANY element IN $fieldlog SATISFIES ANY field IN element.fields SATISFIES field.newvalue == "Ivonne" END END
更简洁的简写形式
AQL支持省略SATISFIES和END的简写,效果完全一致:
ANY element IN $fieldlog ANY field IN element.fields field.newvalue == "Ivonne"
如果是查询集合中的文档(假设$fieldlog是文档的属性)
如果你的场景是从集合中筛选包含符合条件的$fieldlog的文档,写法如下:
FOR doc IN your_collection_name FILTER ANY element IN doc.$fieldlog ANY field IN element.fields field.newvalue == "Ivonne" RETURN doc
上述语句会匹配所有满足以下条件的对象/文档:$fieldlog数组中存在至少一条日志条目,该条目的fields数组里有字段的newvalue等于"Ivonne"。对应你提供的示例数据,会匹配到第二条日志条目(user2的那条)。
内容的提问来源于stack exchange,提问作者Robert Kreutzer
相关产品推荐
相关产品推荐

