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.