Почему этот Cypher возвращает массив массивов для ключа `data`? - PullRequest
0 голосов
/ 05 октября 2018

Запрос

curl -X POST \
  http://my-neo4j.example.com:7474/db/data/cypher \
  -H 'Accept: application/json; charset=UTF-8' \
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 10c0796f-d397-4c05-8f6d-9dcde4baca8a' \
  -d '{
  "query" : "MATCH (c:category) RETURN c {.categoryName} ORDER BY c.categoryName"
}'

Ответ

{
    "columns": [
        "c"
    ],
    "data": [
        [
            {
                "categoryName": "Scenario"
            }
        ],
        [
            {
                "categoryName": "Theme"
            }
        ],
        [
            {
                "categoryName": "Video Mood"
            }
        ]
    ]
}

Вопрос: Почему результат не выглядиткак это

{
    "columns": [
        "c"
    ],
    "data": [
        {
            "categoryName": "Scenario"
        },
        {
            "categoryName": "Theme"
        },
        {
            "categoryName": "Video Mood"
        }
    ]
}

1 Ответ

0 голосов
/ 05 октября 2018
  • Возвращенное значение data представляет собой массив строк.
  • Каждая строка представляет собой массив столбцов (по одному для каждого элемента в предложении RETURN).
  • RETURN c {.categoryName} возвращает только один столбец.И, поскольку вы использовали проекцию карты для указания значения столбца, результирующим значением будет карта (которая содержит одно поле в вашем случае).

Если ваш запрос имелЕсли вы используете RETURN c.categoryName вместо RETURN c {.categoryName}, результат может оказаться менее запутанным:

{
    "columns": [
        "c.categoryName"
    ],
    "data": [
        [
            "Scenario"
        ],
        [
            "Theme"
        ],
        [
            "Video Mood"
        ]
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...