Я пытаюсь получить все (*) столбцы из объекта 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.