MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để viết truy vấn SQL này theo cú pháp Mongodb?

Đố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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhận được sự khác biệt trong vài giây từ hai ngày trong JavaScript

  2. Mongo Câu hỏi truy vấn $ gt, $ lt

  3. mongo / node TypeError:callback không phải là một hàm trên truy vấn

  4. Truy vấn sau khi điền trong Mongoose

  5. Cách kiểm tra trước tài liệu MongoDB đã xuất trong mongoexport