Voor deze SQL-query:
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;
De equivalente MongoDB-query is:(inclusief sorteren en beperken, verwijderen indien niet vereist)
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
}
]
)
U kunt ook op elk moment vanuit de tools de equivalente mongodb-query genereren. zoals in mijn geval gebruik ik No Sql Booster for MongoDB
. Ik gebruik ook de gratis versie van No Sql Booster for MongoDB
Stappen die u kunt volgen:
- STAP 1: Verbind uw Mongo DB Query String en selecteer deze
SQL
zoals weergegeven in afbeelding:
- STAP 2: U ziet een tekstgebied met
mb.runSQLQuery()
zoals hieronder weergegeven. U kunt elke vraag schrijven en op Code klikken. De code wordt hieronder gegenereerd zoals weergegeven in de afbeelding. Maak je geen zorgen, het converteert alle zoekopdrachten, maakt geen verbinding met de database.