sql >> Database >  >> NoSQL >> MongoDB

Hoe schrijf ik deze SQL-query in Mongodb-syntaxis?

Voor deze SQL-query:

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;

De equivalente MongoDB-query is:(inclusief sorteren en beperken, verwijderen indien niet vereist)

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
        }
    ]
)

U kunt ook op elk moment vanuit de tools de equivalente mongodb-query genereren. zoals in mijn geval gebruik ik No Sql Booster for MongoDB . Ik gebruik ook de gratis versie van No Sql Booster for MongoDB

Stappen die u kunt volgen:

  • STAP 1: Verbind uw Mongo DB Query String en selecteer deze SQL zoals weergegeven in afbeelding:

  • STAP 2: U ziet een tekstgebied met mb.runSQLQuery() zoals hieronder weergegeven. U kunt elke vraag schrijven en op Code klikken. De code wordt hieronder gegenereerd zoals weergegeven in de afbeelding. Maak je geen zorgen, het converteert alle zoekopdrachten, maakt geen verbinding met de database.




  1. Hoe de laatste N-records in Mongodb te krijgen?

  2. Ingesloten document upsert in yiimongodbsuite

  3. MongoDB $pop

  4. Meerdere waarden retourneren met Go Mongo Distinct