Đối với Truy vấn SQL này:
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;
Truy vấn MongoDB tương đương là:(bao gồm cả sắp xếp và giới hạn, loại bỏ nếu không bắt buộc)
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
}
]
)
Bạn cũng có thể tạo truy vấn mongodb tương đương bất kỳ lúc nào từ các công cụ. như trong trường hợp của tôi, tôi đang sử dụng No Sql Booster for MongoDB
. Tôi cũng đang sử dụng phiên bản miễn phí của No Sql Booster for MongoDB
Các bước bạn có thể làm theo:
- BƯỚC 1: Kết nối chuỗi truy vấn Mongo DB của bạn và chọn
SQL
này như trong hình ảnh:
- BƯỚC 2: Bạn sẽ thấy một vùng văn bản có
mb.runSQLQuery()
như hình bên dưới. Bạn có thể viết bất kỳ truy vấn nào và nhấp vào Mã. Mã sẽ được tạo bên dưới như trong hình ảnh. Đừng lo, nó chuyển đổi tất cả các truy vấn, không kết nối trên cơ sở dữ liệu.