sql >> Databáze >  >> NoSQL >> MongoDB

Jak napíšu tento dotaz SQL v syntaxi Mongodb?

Pro tento SQL dotaz:

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;

Ekvivalentní dotaz MongoDB je:(včetně řazení a omezení, pokud není vyžadováno, odstraňte jej)

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

Z nástrojů můžete také kdykoli vygenerovat ekvivalentní dotaz mongodb. jako v mém případě používám No Sql Booster for MongoDB . Používám také bezplatnou verzi No Sql Booster for MongoDB

Kroky, které můžete provést:

  • KROK 1: Připojte svůj řetězec dotazu Mongo DB a vyberte tento SQL jak je znázorněno na obrázku:

  • KROK 2: Uvidíte textovou oblast s mb.runSQLQuery() Jak je ukázáno níže. Můžete napsat libovolný dotaz a kliknout na Kód. Kód bude vygenerován níže, jak je znázorněno na obrázku. Nebojte se, převede všechny dotazy, nepřipojí se k databázi.




  1. Získejte BinData UUID z Mongo jako řetězec

  2. Demeteorizátor s node-webkit

  3. Limit č. řádků ve vstupu mongodb

  4. vrátit pouze jednu vlastnost _id