MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak napisać to zapytanie SQL w składni Mongodb?

Dla tego zapytania 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;

Równoważne zapytanie MongoDB to:(uwzględnia również sortowanie i ograniczanie, usuń, jeśli nie jest wymagane)

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

Możesz również wygenerować równoważne zapytanie mongodb w dowolnym momencie za pomocą narzędzi. tak jak w moim przypadku używam No Sql Booster for MongoDB . Używam również darmowej wersji No Sql Booster for MongoDB

Kroki, które możesz wykonać:

  • KROK 1: Podłącz ciąg zapytania Mongo DB i wybierz ten SQL jak pokazano na obrazku:

  • KROK 2: Zobaczysz obszar tekstowy z mb.runSQLQuery() jak pokazano niżej. Możesz napisać dowolne zapytanie i kliknąć Kod. Kod zostanie wygenerowany poniżej, jak pokazano na obrazku. Nie martw się, konwertuje wszystkie zapytania, nie łączy się z bazą danych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chcę, aby moja funkcja pre('save') mangusta działała tylko raz

  2. MongoDB db.collection.count()

  3. MongoDB — ściąganie wielu obiektów z tablicy

  4. Transakcja 1 została popełniona w MongoDB

  5. czy FindIterable<Document> ładuje wszystkie dokumenty?