8

次のようなドキュメントがあります。

{   "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ます。配列を操作する他の方法はありますか?

4

2 に答える 2

10

あなたはこれを行うことができます:

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

これにより、「addrs」属性に「state」==「OH」の要素が少なくとも 1 つあるすべてのクライアントが返されます。

于 2014-06-22T13:21:36.847 に答える
1

最初に、次のようなフィルターを使用して、そのコレクション内のドキュメントを選択する必要があります。

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

addrsこれはstate == "OH"のオブジェクトを返します。完全なドキュメントを取得したい場合は、 に置き換えRETURN dRETURN docください。

于 2017-01-04T07:54:41.843 に答える