MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie schreibe ich diese SQL-Abfrage in Mongodb-Syntax?

Für diese SQL-Abfrage:

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;

Die entsprechende MongoDB-Abfrage lautet:(einschließlich Sortierung und Begrenzung, entfernen, falls nicht erforderlich)

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

Sie können die entsprechende mongodb-Abfrage auch jederzeit über die Tools generieren. wie in meinem Fall verwende ich No Sql Booster for MongoDB . Ich verwende auch die kostenlose Version von No Sql Booster for MongoDB

Schritte, denen Sie folgen können:

  • SCHRITT 1: Verbinden Sie Ihre Mongo DB-Abfragezeichenfolge und wählen Sie diesen SQL aus wie im Bild gezeigt:

  • SCHRITT 2: Sie sehen einen Textbereich mit mb.runSQLQuery() Wie nachfolgend dargestellt. Sie können eine beliebige Abfrage schreiben und auf Code klicken. Der Code wird unten wie im Bild gezeigt generiert. Keine Sorge, es konvertiert alle Abfragen und stellt keine Verbindung zur Datenbank her.