För denna SQL-fråga:
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;
Den motsvarande MongoDB-frågan är:(inklusive sortering och begränsning, ta bort om det inte krävs)
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
}
]
)
Du kan också generera motsvarande mongodb-fråga när som helst från verktygen. som i mitt fall använder jag No Sql Booster for MongoDB
. Jag använder också gratisversionen av No Sql Booster for MongoDB
Steg som du kan följa:
- STEG 1: Anslut din Mongo DB-frågesträng och välj denna
SQL
som visas på bilden:
- STEG 2: Du kommer att se ett textområde med
mb.runSQLQuery()
enligt nedanstående. Du kan skriva vilken fråga som helst och klicka på Kod. Koden kommer att genereras nedan enligt bilden. Oroa dig inte, den konverterar alla frågor, ansluter inte till databasen.