Я пытаюсь реализовать синтаксис SQL запроса $ lookup для левого внешнего соединения внутри таблицы, но он никогда не работает. Я пробую этот подход, потому что «LEFT OUTER JOIN» занимает много времени (часов) для обработки информации, так как мои коллекции в гигабайтах.
Ошибка, которую я постоянно получаю из Таблицы SQL здесь:
Произошла ошибка при обмене данными с MongoDB BI Connector.
Bad Connection: Tableau не удалось подключиться к источнику данных.
[MySQL] [Драйвер ODBC 8.0 (w)] [mysqld-5.7.12 mongosqld v2.7.0] parse sql 'SELECT *
ОТ (
SELECT *, video_docs
ИЗ видео
ГДЕ video_docs IN (ВЫБРАТЬ *
ОТ видео_авторов
ГДЕ author_name = videos.author);
) Пользовательский SQL-запрос
LIMIT 0 'error: синтаксическая ошибка в позиции 147
BI-коннектор работает нормально в соответствии с документацией, но все равно он говорит мне, что это ошибка синтаксического анализа.
Мой эквивалент SQL-запроса для оболочки Mongo
Mongo Shell Query, он отлично работает!
db.videos.aggregate([
{
$lookup:
{
from: "video_authors",
localField: "author",
foreignField: "author_name",
as: "video_docs"
}
}
])
SQL-запрос, никогда не работает
SELECT *, video_docs
FROM videos
WHERE video_docs IN (SELECT *
FROM video_authors
WHERE author_name= videos.author);
Я следую этой ссылке из Mongodb.
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/#perform-a-single-equality-join-with-lookup
Любая помощь будет оценена!
С уважением,
Аднан