MongoDB的SQLite脚本

MongoDB的SQLite脚本,sql,mongodb,translate,converters,Sql,Mongodb,Translate,Converters,我是MongoDB的新手。我需要帮助。我有一个带有SQLite 7个表和1个视图的小项目。我需要在MongoDB上创建这个项目,我正在使用Studio 3T,我已经在将SQLite表迁移到MongoDB集合,但是现在我需要为这个项目创建视图/测试。请帮助如何使用MongoDB编写此SQL脚本。 SQLITE: MongoDB: 我想用MongoDB创建的SQLIte脚本: CREATE VIEW rezultatas AS SELECT p.pavadinimas AS detales_

我是MongoDB的新手。我需要帮助。我有一个带有SQLite 7个表和1个视图的小项目。我需要在MongoDB上创建这个项目,我正在使用Studio 3T,我已经在将SQLite表迁移到MongoDB集合,但是现在我需要为这个项目创建视图/测试。请帮助如何使用MongoDB编写此SQL脚本。 SQLITE:

MongoDB:

我想用MongoDB创建的SQLIte脚本:

CREATE VIEW rezultatas AS
    SELECT p.pavadinimas AS detales_pavadinimas,
        SUM(d.pagamintas_kiekis) AS pagamintas_kiekis,
        SUM(z.gamybos_islaidos) AS vidutine_kaina,
        STRFTIME('%m', d.pagaminimo_data) AS menuo,
        STRFTIME('%Y', d.pagaminimo_data) AS metai
    FROM detales d,
         zinynas z,
         produktas p
   WHERE (z.detale_id = p._id_) AND
         (d.detale_id = z.detale_id) AND
         (d.pagaminimo_data >= z.data_nuo) AND
        NOT EXISTS (
                SELECT *
                    FROM zinynas
                  WHERE (d.detale_id = detale_id) AND
                        (d.pagaminimo_data >= data_nuo) AND
                        (z.data_nuo < data_nuo)
        )
   GROUP BY p.pavadinimas,
            STRFTIME('%m', d.pagaminimo_data),
            STRFTIME('%Y', d.pagaminimo_data)

由于缺乏方案,我不得不猜测一些事情,但基本布局应该可以

我们将使用这些参数作为输入:

db.createView'rezultatas','produktas',管道

这意味着我们创建视图的管道从produktas集合开始

要使用的管道:

[
    { // match the documents from the zinyas collection.
        $lookup:
            {
                from: "zinynas",
                let: { produktas_id: "$_id" }, // i'm guessing its _id
                pipeline: [
                    { $match:
                            { $expr: { $eq: [ "$detale_id",  "$$produktas_id" ] }}
                    },
                ],
                as: "z"
            }
    },
    {
        $unwind: "$z"
    },
    {  // match the documents from the detales collection. only keep the one with maximum data_nuo value.
        $lookup:
            {
                from: "detales",
                let: { z_detale_id: "$z.detale_id", z_data_nuo: "$z.data_nuo" },
                pipeline: [
                    { $match:
                            {
                                $and: [
                                    { $expr: { $eq: [ "$detale_id",  "$$z_detale_id" ] }},
                                    { $expr: { $gte: [ "$pagaminimo_data", "$$z_data_nuo"]}}
                                ]
                            }
                    },
                    {
                        $sort: {
                            data_nuo: -1
                        }
                    },
                    {
                        $limit: 1
                    }
                ],
                as: "d"
            }
    },
    {
        $unwind: "$d"
    },
    {  // end up saving the fields we want.
        $group: {
            _id: { pavadinimas : "$pavadinimas", month: {$month: "$d.pagaminimo_data"}, year: {$year: "$d.pagaminimo_data"}},
            pagamintas_kiekis: {$sum: "$d.pagamintas_kiekis"},
            vidutine_kaina: {$sum: "$z.gamybos_islaidos"},
            month: {$first: {$month: "$d.pagaminimo_data"}},
            year: {$first: {$year: "$d.pagaminimo_data"}},
            detales_pavadinimas: {$first: "$pavadinimas"}
        }
    }
]

MongoDB不是关系数据库。最有可能的是,你将无法克隆依赖连接等的db模式。我个人认为这很容易实现,你只需要将其转换为Mongo管道,如果你提供方案,这将使我更容易帮助你。2020-01-07T16:39:15.449+0200 E QUERY[js]ReferenceError:未定义管道:@shell:1:1我在尝试创建管道时收到此消息。创建管道是什么意思?只是粘贴我发布的管道。我得到这个错误,无法执行脚本。错误:ReferenceError:未定义管道详细信息:@shell:1:1pipeline是一个未定义的参数-在我编写管道的地方,它表示包含所有Mongo聚合阶段的数组。我这样写是为了提高阅读能力