sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo escribo esta consulta SQL en la sintaxis de 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;

La consulta MongoDB equivalente es:(clasificación y límite incluidos también, elimínelos si no es necesario)

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
        }
    ]
)

También puede generar la consulta mongodb equivalente en cualquier momento desde las herramientas. como en mi caso, estoy usando No Sql Booster for MongoDB . También estoy usando la versión gratuita de No Sql Booster for MongoDB

Pasos que puedes seguir:

  • PASO 1: Conecte su cadena de consulta Mongo DB y seleccione este SQL como se muestra en la imagen:

  • PASO 2: Verá un área de texto con mb.runSQLQuery() Como se muestra abajo. Puede escribir cualquier consulta y hacer clic en Código. El código se generará a continuación como se muestra en la imagen. No se preocupe, convierte todas las consultas, no se conecta a la base de datos.