Ho un documento nel mio database OrientDB (versione 1.0.1), con una struttura in gran parte come questa:Interrogare un elenco incorporato in OrientDB
{
"timestamp": "...",
"duration": 665,
"testcases": [
{
"testName": "test01",
"type": "ignore",
"filename": "tests/test1.js"
},
{
"iterations": 1,
"runningTime": 45,
"testName": "test02",
"type": "pass",
"filename": "tests/test1.js"
},
...
{
"testName": "test05",
"type": "ignore",
"filename": "tests/test1.js"
}
]
}
Come posso interrogare tutta la lista, per esempio. se voglio trovare tutti i documenti che contengono una testcase con il tipo "ignora"?
Ho tentato la seguente query
select from testresult where testcases['type'] = 'ignore'
ma questo si traduce in un NumberFormatException
.
select from testresult where testcases[0]['type'] = 'ignore'
funziona, ma ovviamente guarda solo il primo elemento dell'elenco di ciascun documento.
select from testresult where testcases contains(type = 'ignore')
Non fornisce alcun risultato, ma la query è accettata come valida.
Aggiornamento: La seguente query funziona come previsto, se i test sono archiviati come documenti separati anziché come elenco incorporato.
select from testresult where testcases contains (type = 'ignore')
Ho avuto lo stesso problema che hai fatto. Puoi pubblicare il tuo aggiornamento nella domanda e accettarlo. Era quello che stavo cercando. –
@DavidLaberge: Grazie per il suggerimento. La domanda è così antica che francamente non ricordo completamente il suo contesto, quindi mi sentirei un po 'a disagio per quella manovra. Ho anche la sensazione che il mio approccio iniziale dovrebbe funzionare, almeno secondo la documentazione di OrientDB, quindi sarebbe sbagliato incoraggiare le persone a ristrutturare i loro database come in precedenza. – Henrik