For denne SQL-forespørgsel:
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 tilsvarende MongoDB-forespørgsel er:(inkluderet sortering og begrænsning, fjern hvis ikke påkrævet)
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 også generere den tilsvarende mongodb-forespørgsel når som helst fra værktøjerne. ligesom i mit tilfælde bruger jeg No Sql Booster for MongoDB
. Jeg bruger også gratis version af No Sql Booster for MongoDB
Trin du kan følge:
- TRIN 1: Tilslut din Mongo DB Query String, og vælg denne
SQL
som vist på billedet:
- TRIN 2: Du vil se et tekstområde med
mb.runSQLQuery()
som vist nedenfor. Du kan skrive en hvilken som helst forespørgsel og klikke på Kode. Koden vil blive genereret nedenfor som vist på billedet. Bare rolig, det konverterer alle forespørgsler, forbinder ikke til databasen.