【问题标题】:How to write the join query in mongoDB ..?如何在 mongoDB 中编写连接查询 ..?
【发布时间】:2020-07-20 12:52:16
【问题描述】:

那个 mysql 查询的 mongoDB 查询是什么?如何在 mongoDB 中使用 join 有我在 mysql 中编写时面临的问题?

SELECT t.uid, count(j.job_id) AS x 
FROM verify AS t 
LEFT JOIN jobs AS j 
ON t.uid = j.job_id

【问题讨论】:

  • 您可能会通过聚合管道及其$lookup 运算符实现一些接近的目标。但是,一般来说,join 和复杂的报告并不是 mongodb 的强项。
  • 如果uid = job_idone-to-one 关系,则问题不正确,那么为什么要加入并获得计数?为什么不简单地计数?
  • 在 no-sql 世界中没有连接,因为大部分时间数据都保存在同一个文档中(json、bson 对象)。即使它们分开保存 - 取决于 db ODM,也有 populate (或类似的)方法
  • 这基本上是说,请不要问“如何转换我的SQL”。因为您应该做的是“重组”您实际存储的数据。如果您只是要复制完全相同的表结构,那么从 RDBMS 迁移到 MongoDB 是没有意义的。
  • 显示this link并查看SQL代码和mongoDB代码中的场景

标签: node.js mongodb mongoose


【解决方案1】:

使用带有$project$lookup 管道的聚合框架如下所示:

db.collection1.aggregation[{
    $project: {

        'uid': 1,
        "x": {
            "$size": "job_id"
        }
    },

    $lookup: {
        from: 'collection2',
        localField: 'uid',
        foreignField: 'job_id',
        as: 'j'
    }
}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2017-11-16
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多