MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment écrire cette requête SQL dans la syntaxe Mongodb ?

Pour cette requête 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 requête MongoDB équivalente est :(tri et limite inclus également, supprimer si non requis)

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

Vous pouvez également générer la requête mongodb équivalente à tout moment à partir des outils. comme dans mon cas, j'utilise No Sql Booster for MongoDB . J'utilise également la version gratuite de No Sql Booster for MongoDB

Étapes que vous pouvez suivre :

  • ÉTAPE 1 : Connectez votre chaîne de requête Mongo DB et sélectionnez ce SQL comme indiqué sur l'image :

  • ÉTAPE 2 : Vous verrez une zone de texte avec mb.runSQLQuery() comme indiqué ci-dessous. Vous pouvez écrire n'importe quelle requête et cliquer sur Code. Le code sera généré ci-dessous comme indiqué dans l'image. Ne vous inquiétez pas, il convertit toutes les requêtes, ne se connecte pas sur la base de données.