【问题标题】:How do I write this SQL query in Mongodb syntax?如何用 Mongodb 语法编写这个 SQL 查询?
【发布时间】:2021-09-10 07:22:34
【问题描述】:

如何用 Mongodb 语法编写这个 SQL 查询?

select a.title 
from movies as a 
inner join ratings as b on a.movieId=b.movieId 
where a.genres like '%Children%' 
and b.rating>3 
group by a.title;

【问题讨论】:

标签: sql mongodb


【解决方案1】:

对于这个 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 查询字符串,并选择此 SQL,如图所示:

  • 第 2 步: 您将看到一个带有 mb.runSQLQuery() 的文本区域,如下所示。您可以编写任何查询,然后单击代码。代码将在下面生成,如图所示。不用担心,它会转换所有查询,不会连接到数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多