J'ai le format de structure de données suivant :

unix/:/var/run/tarantool/tarantool.sock> s:format()
---
- [{'name': 'id', 'type': 'unsigned'}, {'name': 'version', 'type': 'array'}, {'name': 'data',
    'type': 'array'}]
...

Et j'ai déjà les données suivantes à l'intérieur:

unix/:/var/run/tarantool/tarantool.sock> s:select{}
---
- - [0, [[21, 'action123'], [12, 'actionXYZ'], [11, 'actionABC']], [['actionXYZ',
        'SOME_JAVASCRIPT_CONTENT']]]
  - [1, [[33, 'action123'], [12, 'baseXYZ'], [11, 'baseABC']], [['bas123', 'SOME_CSS_CONTENT']]]
...

J'ai lu les références et la documentation et je suis un peu perdu pour compléter ce qui suit :

  1. Quel est l'équivalent "WHERE" ? c'est à dire. Sélectionnez pour trouver les entrées qui ont un version de 12

    Ne pas voir d'exemples applicables dans https://www.tarantool .io/en/doc/2.2/reference/reference_lua/box_space/#lua-function.space_object.select

  2. Liste des éléments avec les noms de champ (afin que je sache quel bloc je regarde). D'une certaine manière, un peu comme avoir des "en-têtes de colonne" dans vos résultats en SQL.

    J'ai des tuples nommés dans mon format() - comment puis-je voir ces noms lorsque j'interroge des données ?

    {'name' : 'id', 'type' : 'unsigned'}, {'name' : 'version', 'type' : 'array'}, {'name' : 'data', 'type' : 'tableau'}]

  3. Jolie impression ! (de préférence yaml)

    J'ai essayé d'utiliser https://www.tarantool.io /en/doc/2.2/reference/reference_lua/yaml/ pour envelopper mes instructions de sélection, mais rien ne fonctionnait.

1
emmdee 7 févr. 2020 à 23:34

1 réponse

Meilleure réponse
  1. Vous devez utiliser des index pour les requêtes impératives efficaces, regardez ici :

https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_space/#lua-function.space_object.create_index

https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_index/

  1. utilisez tuple:tomap() :

https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_tuple/#lua-function.tuple_object.tomap

  1. Cela dépend de l'endroit où vous le voulez joli. Vous devrez peut-être régler les paramètres de yaml ou simplement enchaîner les appels tomap :
tarantool> box.space.TEST:pairs():map(function(x) return x:tomap({names_only=true}) end):totable()
---
- - COLUMN1: 1
    COLUMN2: a
  - COLUMN1: 13
    COLUMN2: a
  - COLUMN1: 1000
    COLUMN2: a
0
Dmitry Sharonov 20 févr. 2020 à 17:03