2017-06-06 3 views
0

Je suis d'apprentissage N1QL afin d'écrire des requêtes pour voir les données d'utilisation, et je suis en train d'examiner les données qui ressemble à ce qui suit:regroupement N1QL Très basique opération de données

"data": { 
     "datapoints": [ 
     { 
      "point1": "data 1", 
      "point2": "data 2", 
      "point3": "data 3" 
     }, 
     { 
      "point1": "more data 1", 
      "point2": "more data 2", 
      "point3": "more data 3" 
     } 
    ] 
    } 

Si je choisis comme ceci:

SELECT data.datapoints [] .point1, data.datapoints [] .point2 dE datatable

je récupérer les données regroupées sous le nom de la colonne, comme ceci:

Est-il possible de configurer la requête pour qu'elle renvoie des données groupées par objet, par opposition à groupées par le (s) point (s) de données, mais uniquement avec les champs que je veux? Je voudrais regarder par document, plutôt que par point de données à travers les documents, juste avec un sous-ensemble des points de données dans les documents. Merci d'avance!

EDIT: Je remarque si je mets ma requête comme ceci:

SELECT data.datapoints[0].point1, data.datapoints[0].point2 FROM datatable 

Mes données sont formatées correctement, comme ceci:

"datapoints": [ 
    { 
     "point1": "data 1", 
     "point2": "data 2", 
    } 
    ] 

mais bien sûr, seul le premier enregistrement de points de données est retourné .

Répondre

1

SELECT ud AS points de données FROM datable d UNNEST d.datapoints AS ud;

UNNEST fonctionne de la même manière que JOIN. UNNEST travaille sur des tableaux.
datable d UNNEST d.datapoints AS ud fait un JOIN cartésien de d et chaque élément de d.datapoints. Enfin nous projetons ud.

Commander Clause UNNEST pour plus de détails.

https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/from.html

+0

Je ne sais pas pourquoi, mais qui fait exactement ce que je veux. Merci! –