9
votes

Interroger une liste intégrée dans ORIENTDB

J'ai un document dans ma base de données Orienddb (version 1.0.1), avec une structure en grande partie comme ceci: xxx pré>

Comment puis-je interroger sur toute la liste, par exemple. Si je veux trouver tous les documents contenant un témoignage avec le type "ignorer"? p>

J'ai tenté la requête suivante p> xxx pré>

mais ces résultats Dans un NumberFormatException code>. p> xxx pré>

fonctionne, mais ne concerne évidemment que le premier élément de liste de chaque document. p>

select from testresult where testcases contains (type = 'ignore')


2 commentaires

J'ai eu le même problème que vous avez fait. Vous pouvez poster votre mise à jour dans la question et l'accepter. C'était ce que je cherchais.


@Davidlaberge: Merci pour la suggestion. La question est si ancienne que je ne me souviens franchement pas complètement son contexte, alors je me sentirais un peu inquiet de cette manœuvre. J'ai aussi le sentiment que mon approche initiale devrait travailler, au moins en fonction de la documentation de Oriendb, il se semblerait donc faux d'encourager les gens à restructurer leurs bases de données comme dans ce qui précède.


3 Réponses :


0
votes

Essayez

{
  "result": [{
      "@type": "d", "@version": 0, 
"name": "Italy", 
  "isoCodes": [
    {
      "@type": "d", "@version": 0, 
    "code": "iso3166-A2", 
    "value": "IT"
      }, 
    {
      "@type": "d", "@version": 0, 
    "code": "iso3166-A3", 
    "value": "ITA"
      }], 
  "status": [
    {
      "@type": "d", "@version": 0, 
    "status": "1", 
    "startingDate": "2012-04-24"
      }]
    }, {
      "@type": "d", "@version": 0, 
"name": "United Kingdom", 
  "isoCodes": [
    {
      "@type": "d", "@version": 0, 
    "code": "iso3166-A2", 
    "value": "GB"
      }, 
    {
      "@type": "d", "@version": 0, 
    "code": "iso3166-A3", 
    "value": "GBR"
      }], 
  "status": [
    {
      "@type": "d", "@version": 0, 
    "status": "1", 
    "startingDate": "2012-04-24"
      }]
    }
  ]
}


1 commentaires

Merci pour votre réponse. Malheureusement, cela n'a pas amélioré ma situation. La requête suggérée fonctionne parfaitement tant que la liste intégrée contient des liens vers d'autres documents, mais ne fournit aucun résultat lorsque les objets de la liste ne sont que des valeurs, c'est-à-dire. La même situation que j'avais atteinte quand j'ai mis à jour ma question. Êtes-vous certain que vos propriétés d'isocodes ne sont pas des documents distincts dans votre base de données?



1
votes

J'ai un problème similaire et finit par:

select from (select expand(testcases) from testresult) where value.type='ignore'


0 commentaires

8
votes

Je sais que c'est une vieille question, mais j'ai eu le même problème et je viens de sublé sur une réponse ici: https://www.mail-archive.com/orient-database@googlegroups.com/ msg00662.html

Les éléments suivants doivent fonctionner. Il fait dans mon cas d'utilisation très similaire. xxx


1 commentaires

L'instruction SQL habituelle où TestCases.Type dans 'Ignorer' n'a pas fonctionné avec Oriendb. Orientdb va avec l'anglais approprié :)