Как получить имя файла (имя столбца) в couchbase, если с помощью запроса N1QL не найдено результатов? - PullRequest
0 голосов
/ 09 мая 2020

Я пишу запрос, чтобы найти информацию о пользователе в Couchbase, я получаю результат в виде пустого массива, но мне нужны поля с пустым результатом, меня пробовали пару раз, но я не получаю поля с результатом с пустым значением. Как получить поля заголовка?

Мой запрос

SELECT C.firstName AS `First Name`,
C.surName `Last Name`,
U.auditDetail.createTime AS `Date/Time of the Registration`
C.contactDetails.`email`.`value` AS `Email Address`,
C.contactDetails.`phone`.`value` AS ‘Phone Number`,
C.sex `Gender`,
C.dob AS `Data of Birth`,
ag.id AS `Referral Code`,
C.addressDetails.`office_new`.`zipcode` AS ‘Postal Code`,
C.addressDetails.`office_new.`city` AS `City`
FROM data C
UNNEST C.activeGroups AS ag
JOIN data_PH U ON U.loginld=C.contactDetails.`email`.`value`
WHERE U.type_='user'
AND C.type_= ‘customer`

Результат:

{
  "results": []
}

1 Ответ

1 голос
/ 09 мая 2020

При выполнении запроса в подписи есть заголовки полей. Это похоже на описание столбцов СУБД.

SELECT
  C.firstName AS `First Name`,
  C.surName `Last Name`,
  U.auditDetail.createTime AS `Date/Time of the Registration`,
  C.contactDetails.`email`.`value` AS `Email Address`,
  C.contactDetails.`phone`.`value` AS `Phone Number`,
  C.sex `Gender`,
  C.dob AS `Data of Birth`,
  ag.id AS `Referral Code`,
  C.addressDetails.`office_new`.`zipcode` AS `Postal Code`,
  C.addressDetails.`office_new`.`city` AS City
FROM default AS C
UNNEST C.activeGroups AS ag
JOIN default AS U ON U.loginld=C.contactDetails.`email`.`value`
WHERE U.type_="user"
      AND C.type_= "customer";

{
    "requestID": "c4a806b6-b3d7-4172-8b60-ebe195d00cef",
    "signature": {
        "City": "json",
        "Data of Birth": "json",
        "Date/Time of the Registration": "json",
        "Email Address": "json",
        "First Name": "json",
        "Gender": "json",
        "Last Name": "json",
        "Phone Number": "json",
        "Postal Code": "json",
        "Referral Code": "json"
    },
    "results": [
    ],
    "status": "success",
    "metrics": {
        "elapsedTime": "9.723082ms",
        "executionTime": "9.616195ms",
        "resultCount": 0,
        "resultSize": 0
    }
}

Если значение поля ОТСУТСТВУЕТ, поле не будет присутствовать в JSON, чтобы сохранить размер Json. Если вы действительно хотите проецировать значения по умолчанию (""), используйте IFMISSING () или IFMISSINGORNULL () или IFNULL ()

Это работает только тогда, когда у вас есть результаты. нулевые результаты по-прежнему дают пустые объекты.

 IFMISSING(C.firstName,"") AS `First Name`  --project MISSING field as empty string    
 IFMISSING(C.firstName, NULL) AS `First Name` --project MISSING field as NULL
...