繁体   English   中英

过滤ArangoDB中的数组值

[英]Filter on array value in ArangoDB

我有一个这样的文件:

{   "baths": 2,   "beds": 3,   "id": "3225C",   "addrs": [
    {
      "line2": "",
      "line3": "",
      "state": "OH",
      "zip": "67845",
      "line1": "3225 ABC AVE",
      "city": "CLEVELAND"
    },
    {
      "line2": "",
      "line3": "",
      "state": "FL",
      "zip": "32818",
      "line1": "2438 DEF AVE",
      "city": "ORLANDO"
    }   ],   "homeAddress": {
    "line2": "",
    "line3": "",
    "state": "FL",
    "zip": "32818",
    "line1": "1234 CHICOTA AVE",
    "city": "ORLANDO"   },   "rentingAddresses": {
    "ownsObjects": true,
    "count": 0,
    "arrayManager": {},
    "items": []   },   "mailAddress": [
    "4561 RAYCO AVE",
    "",
    "",
    "ORLANDO",
    "FL",
    "32818"   ] }

我试图找出哪些客户端有一个addrs ,其中状态为“OH”。 我的aql查询是:

for client in clients.addrs
filter client.state == "OH"
return client

但我一直得到[1563] list expected 还有其他方法可以使用数组吗?

你可以这样做:

FOR client IN clients
   FILTER 'OH' IN client.addrs[*].state
   RETURN client

这应该返回“addrs”属性中至少有一个元素的所有客户端“state”==“OH”

首先,您必须使用以下过滤器选择该集合中的文档:

FOR doc IN clients
 FILTER doc.id == "3225C"
   FOR d IN doc.addrs
    FILTER d.state == "OH"
   RETURN d

这将返回状态==“OH”的addrs对象。 如果你想获得完整的文档,只需用RETURN doc替换RETURN d

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM