MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да напиша тази SQL заявка в синтаксиса на Mongodb?

За тази 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() както е показано по-долу. Можете да напишете всяка заявка и да щракнете върху Код. Кодът ще бъде генериран по-долу, както е показано на изображението. Не се притеснявайте, той преобразува всички заявки, не се свързва с базата данни.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Каква е ползата от fluentd при този сценарий?

  2. Как мога да извлека модифицирани документи след операция за актуализиране в mongodb с pymongo?

  3. Възел - Mongoose 3.6 - Заявка за сортиране с попълнено поле

  4. Нива на несигурност на MongoDB и как да ги избегнем

  5. Express node.js контролерът не чака манипулиране на данни и връща стари данни