Как исправить: невозможно получить все поля коллекции MongoDB с помощью запроса выражений Apache Drill SQL - PullRequest
1 голос
/ 13 апреля 2019

Я пытаюсь получить все (*) столбцы из объекта MongoDB с помощью выражения Apache Drill SQL:

`_id`.`$oid`

Справочная информация: Я использую Apache Drill для запроса MongoDBколлекции.По умолчанию Drill получает значения ObjectId в другом формате, чем тот, который хранится в базе данных.Например:

Mongo: ObjectId («59f2c3eba83a576fe07c735c»)

Результат запроса детализации: [B @ 3149a…]

Чтобы получитьДля данных в формате String (59f2c3eba83a576fe07c735c) из объекта я изменил конфигурацию Drill «store.mongo.bson.record.reader» на «false».

ALTER SESSION SET store.mongo.bson.record.reader = false

Результат запроса детализации после установки в false:

select * from calc;
+--------------------------------------+---------+
|                 _id                  |  name   |
+--------------------------------------+---------+
| {"$oid":"5cb0e161f0849231dfe16d99"}  | thiago  |
+--------------------------------------+---------+

Выполнение запроса по _id:

 select `o`.`_id`.`$oid` , `o`.`name` from mongo.od_teste.calc o where `o`.`_id`.`$oid`='5cb0e161f0849231dfe16d99';

Результат:

+---------------------------+---------+
|          EXPR$0           |  name   |
+---------------------------+---------+
| 5cb0e161f0849231dfe16d99  | thiago  |
+---------------------------+---------+

Для объекта с несколькими столбцами, подобного приведенному выше (_id, name) можно указать все столбцы в запросе выбора по идентификатору.Однако в моей производственной базе данных объекты имеют «сотню» столбцов.

Если я попытаюсь запросить все (*) столбцы из коллекции, это будет результат:

select `o`.* from mongo.od_teste.calc o where `o`.`_id`.`$oid`='5cb0e161f0849231dfe16d99';

или

select * from mongo.od_teste.calc o where `o`.`_id`.`$oid`='5cb0e161f0849231dfe16d99';
+-----+
| **  |
+-----+
+-----+
No rows selected (6.112 seconds)

Ожидаемый результат: Извлечение всех столбцов из коллекции MongoDB вместо объявления их всех в запросе SQL.

1 Ответ

0 голосов
/ 14 апреля 2019

У меня нет предложений, потому что это ошибка в Mongo Storage Plugin.
Я создал билет Jira для него, пожалуйста, посмотрите и не стесняйтесь добавлять любую связанную информацию там: DRILL-7176

...