MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come scrivo questa query SQL nella sintassi di Mongodb?

Per questa query 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 query MongoDB equivalente è:(incluso anche l'ordinamento e il limite, rimuovi se non richiesto)

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

Puoi anche generare la query mongodb equivalente in qualsiasi momento dagli strumenti. come nel mio caso sto usando No Sql Booster for MongoDB . Sto anche usando la versione gratuita di No Sql Booster for MongoDB

Passaggi che puoi seguire:

  • PASSAGGIO 1: Collega la tua stringa di query Mongo DB e seleziona questo SQL come mostrato nell'immagine:

  • PASSAGGIO 2: Vedrai un'area di testo con mb.runSQLQuery() come mostrato di seguito. Puoi scrivere qualsiasi query e fare clic su Codice. Il codice verrà generato di seguito come mostrato nell'immagine. Non preoccuparti, converte tutte le query, non si connette al database.