MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como escrevo essa consulta SQL na sintaxe do Mongodb?


Para esta consulta SQL:
select movies.title 
from movies 
inner join ratings on movies.movieId=ratings.movieId 
where movies.genres like '%Children%' 
and ratings.rating>3 
group by movies.title;

A consulta do MongoDB equivalente é:(incluído classificação e limite também, remova se não for necessário)
db.movies.aggregate(
    [
        {
            "$lookup" : {
                "from" : "ratings",
                "localField" : "movieId",
                "foreignField" : "movieId",
                "as" : "ratings_docs"
            }
        },
        {
            "$match" : {
                "ratings_docs" : {
                    "$ne" : [ ]
                }
            }
        },
        {
            "$addFields" : {
                "ratings_docs" : {
                    "$arrayElemAt" : [
                        "$ratings_docs",
                        0
                    ]
                }
            }
        },
        {
            "$match" : {
                "genres" : /^.*Children.*$/is,
                "ratings_docs.rating" : {
                    "$gt" : 3
                }
            }
        },
        {
            "$group" : {
                "_id" : {
                    "title" : "$title"
                }
            }
        },
        {
            "$project" : {
                "title" : "$_id.title"
            }
        },
        {
            "$sort" : {
                "_id" : -1
            }
        },
        {
            "$limit" : 100
        }
    ]
)

Você também pode gerar a consulta mongodb equivalente a qualquer momento nas ferramentas. como no meu caso estou usando No Sql Booster for MongoDB . Também estou usando a versão gratuita do No Sql Booster for MongoDB

Etapas que você pode seguir:
  • ETAPA 1: Conecte sua string de consulta do Mongo DB e selecione este SQL como mostrado na imagem:


  • ETAPA 2: Você verá uma área de texto com mb.runSQLQuery() como mostrado abaixo. Você pode escrever qualquer consulta e clicar em Código. O código será gerado abaixo conforme mostrado na imagem. Não se preocupe, ele converte todas as consultas, não conecta no banco de dados.