За тази SQL заявка:
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;
Еквивалентната MongoDB заявка е:(включено сортиране и ограничаване също, премахнете, ако не е необходимо)
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
}
]
)
Можете също така да генерирате еквивалентна mongodb заявка по всяко време от инструментите. както в моя случай, аз използвам No Sql Booster for MongoDB
. Също така използвам безплатна версия на No Sql Booster for MongoDB
Стъпки, които можете да следвате:
- СТЪПКА 1: Свържете вашия Mongo DB Query String и изберете този
SQL
както е показано на изображението:
- СТЪПКА 2: Ще видите текстова област с
mb.runSQLQuery()
както е показано по-долу. Можете да напишете всяка заявка и да щракнете върху Код. Кодът ще бъде генериран по-долу, както е показано на изображението. Не се притеснявайте, той преобразува всички заявки, не се свързва с базата данни.