Filter nilai array di ArangoDB

Saya punya dokumen seperti ini:

{   "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"   ] }

Saya mencoba mencari klien mana yang memiliki addrs dengan status "OH". Pertanyaan aql saya adalah:

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

Tapi saya terus mendapatkan [1563] list expected. Apakah ada cara lain untuk bekerja dengan array?


person Lerato    schedule 22.06.2014    source sumber


Jawaban (2)


kamu bisa melakukan ini:

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

ini akan mengembalikan semua klien yang memiliki setidaknya satu elemen dalam atribut "addrs" dengan "state" == "OH"

person fceller    schedule 22.06.2014

pertama Anda harus memilih dokumen dalam koleksi itu dengan menggunakan filter seperti ini:

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

ini akan mengembalikan objek addrs dengan status == "OH". jika ingin mendapatkan dokumen yang lengkap, ganti saja RETURN d dengan RETURN doc .

person Vinit Singh    schedule 04.01.2017
comment
Saya meminta Anda untuk menambahkan lebih banyak konteks di sekitar jawaban Anda. Jawaban hanya kode atau hanya tautan sulit untuk dipahami. Ini akan membantu penanya dan pembaca di masa depan jika Anda dapat menambahkan lebih banyak informasi di posting Anda. - person RBT; 04.01.2017
comment
Terima kasih! untuk saran Anda. - person Vinit Singh; 04.01.2017