sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur skriver jag den här SQL-frågan i Mongodb-syntax?

För denna SQL-fråga:

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 motsvarande MongoDB-frågan är:(inklusive sortering och begränsning, ta bort om det inte krävs)

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 också generera motsvarande mongodb-fråga när som helst från verktygen. som i mitt fall använder jag No Sql Booster for MongoDB . Jag använder också gratisversionen av No Sql Booster for MongoDB

Steg som du kan följa:

  • STEG 1: Anslut din Mongo DB-frågesträng och välj denna SQL som visas på bilden:

  • STEG 2: Du kommer att se ett textområde med mb.runSQLQuery() enligt nedanstående. Du kan skriva vilken fråga som helst och klicka på Kod. Koden kommer att genereras nedan enligt bilden. Oroa dig inte, den konverterar alla frågor, ansluter inte till databasen.




  1. Länkningsfel när man bygger c++-projekt med mongo-cxx-drivrutin

  2. Hur man skapar fält för automatisk ökning

  3. Hur inaktiverar man loggning av mongoDB java-drivrutiner?

  4. Hur cursor.observe fungerar och hur undviker man att flera instanser körs?